निम्न में से किसी भी स्तंभ को हटा देगा foo
data.table से 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"
, तो आप एक शून्य-पंक्ति डेटा के साथ समाप्त हो जाएंगे।
एक परिणाम के रूप में, वे वास्तव में इंटरएक्टिव उपयोग के लिए सबसे उपयुक्त हैं जहां कोई भी हो सकता है, उदाहरण के लिए, किसी डेटा स्तंभ को किसी भी स्तंभ को प्रदर्शित करना चाहते हैं जिसमें सबस्ट्रिंग वाले नाम हों "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
बजाय data.table नाम देना स्पष्ट होगाdf3
...