यदि आप संदर्भ द्वारा कॉलम को हटाना चाहते हैं और इससे जुड़ी आंतरिक नकल से बचते हैं data.frames
तो आप data.table
पैकेज और फ़ंक्शन का उपयोग कर सकते हैं:=
आप :=
ऑपरेटर के बाएं हाथ की ओर , और NULL
RHS के रूप में एक चरित्र वेक्टर नाम पास कर सकते हैं ।
library(data.table)
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# or more simply DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10) #
DT[, c('a','b') := NULL]
आप के लिए कॉल बाहर चरित्र वेक्टर के रूप में के रूप में नाम पूर्वपरिभाषित चाहते हैं [
, में ऑब्जेक्ट का नाम लपेट ()
या {}
मजबूर करने के लिए एलएचएस बुला दायरे में मूल्यांकन किया जाना के दायरे के भीतर एक नाम के रूप में नहीं DT
।
del <- c('a','b')
DT <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, (del) := NULL]
DT <- <- data.table(a=1:10, b=1:10, c=1:10, d=1:10)
DT[, {del} := NULL]
# force or `c` would also work.
आप भी उपयोग कर सकते हैं set
, जो ओवरहेड से बचा जाता है [.data.table
, और इसके लिए भी काम करता है data.frames
!
df <- data.frame(a=1:10, b=1:10, c=1:10, d=1:10)
DT <- data.table(df)
# drop `a` from df (no copying involved)
set(df, j = 'a', value = NULL)
# drop `b` from DT (no copying involved)
set(DT, j = 'b', value = NULL)
df#drop(var_name)
, और इसके बजाय, हमें इन जटिल कामों को करने की आवश्यकता है?