নিম্নলিখিতগুলির মধ্যে foo
যে কোনও ডেটা থেকে কলামটি সরিয়ে ফেলবে । টেবিল df3
:
# Method 1 (and preferred as it takes 0.00s even on a 20GB data.table)
df3[,foo:=NULL]
df3[, c("foo","bar"):=NULL] # remove two columns
myVar = "foo"
df3[, (myVar):=NULL] # lookup myVar contents
# Method 2a -- A safe idiom for excluding (possibly multiple)
# columns matching a regex
df3[, grep("^foo$", colnames(df3)):=NULL]
# Method 2b -- An alternative to 2a, also "safe" in the sense described below
df3[, which(grepl("^foo$", colnames(df3))):=NULL]
data.table নিম্নলিখিত বাক্য গঠন সমর্থন করে:
## Method 3 (could then assign to df3,
df3[, !"foo"]
যদিও আপনি যদি সত্যই এর "foo"
থেকে কলামটি সরিয়ে ফেলতে চেয়েছিলেন df3
(কেবলমাত্র df3
বিয়োগ কলামের একটি দৃশ্য মুদ্রণের বিপরীতে "foo"
) আপনি তার পরিবর্তে পদ্ধতি 1 ব্যবহার করতে চান।
(মনে রাখবেন যে আপনি যদি নির্ভর করে এমন কোনও পদ্ধতি ব্যবহার করেন grep()
বা grepl()
, এর pattern="^foo$"
পরিবর্তে আপনাকে সেট করতে হবে "foo"
, যদি আপনি নামগুলির সাথে কলামগুলি না চান "fool"
এবং "buffoon"
( foo
যেমন একটি স্ট্রিং হিসাবে থাকা )ও মিলছে এবং সরিয়ে ফেলতে হবে))
ইন্টারেক্টিভ ব্যবহারের জন্য কম নিরাপদ বিকল্প, জরিমানা:
পরবর্তী দুটি আইডিয়ামগুলিও কাজ করবে - যদি df3
একটি কলামের মিল রয়েছে"foo"
- তবে এটি যদি না ঘটে তবে সম্ভবত একটি অপ্রত্যাশিতভাবে ব্যর্থ হবে। উদাহরণস্বরূপ, অস্তিত্বহীন কলামটি অনুসন্ধান "bar"
করতে আপনি যদি এর মধ্যে কোনওটি ব্যবহার করেন তবে আপনি একটি শূন্য-সারি ডেটা.ট্যাবল দিয়ে শেষ করবেন।
ফলত, তারা সত্যিই ভাল ইন্টারেক্টিভ ব্যবহারের জন্য উপযোগী হয় যেখানে এক পারে, যেমন, একটি data.table বিয়োগ সাবস্ট্রিং ধারণকারী নামের সাথে কোন কলাম প্রদর্শন করাতে চান "foo"
। প্রোগ্রামিংয়ের উদ্দেশ্যে (বা আপনি যদি df3
কপির (অনুলিপিগুলি এর অনুলিপি না করে আসলেই সরিয়ে ফেলতে চান ), পদ্ধতি 1, 2 এ এবং 2 বি সত্যিই সেরা বিকল্প।
# Method 4:
df3[, .SD, .SDcols = !patterns("^foo$")]
শেষ অবধি ব্যবহার করার পদ্ধতি রয়েছে with=FALSE
, যদিও data.table
ধীরে ধীরে এই যুক্তিটি ব্যবহার করা থেকে দূরে সরে যাচ্ছে সুতরাং এটি এখন নিরুৎসাহিত হয়েছে যেখানে আপনি এড়াতে পারবেন; এখানে সত্য দেখাচ্ছে যাতে আপনার যদি প্রয়োজন হয় তবে বিকল্পটি বিদ্যমান রয়েছে তা আপনি জানেন:
# Method 5a (like Method 3)
df3[, !"foo", with=FALSE]
# Method 5b (like Method 4)
df3[, !grep("^foo$", names(df3)), with=FALSE]
# Method 5b (another like Method 4)
df3[, !grepl("^foo$", names(df3)), with=FALSE]
dt
পরিবর্তে ডেটা.টিটেবলের নামকরণ করা আরও পরিষ্কার হতdf3
...