Aşağıdakilerden herhangi biri foodata.table öğesinden sütunu kaldıracaktır 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 ayrıca aşağıdaki sözdizimini de destekler:
## Method 3 (could then assign to df3,
df3[, !"foo"]
aslında sütunu kaldırmak isteyen olsaydı gerçi "foo"gelen df3(sadece bir görünümünü baskı aksine df3eksi hanesinde "foo") Gerçekten Yöntem 1 yerine kullanmak isterdim.
(Do not Eğer bir yöntem dayanarak kullanırsanız o grep()ya grepl(), sen ayarlamak gerekir pattern="^foo$"ziyade "foo"sizin gibi adlarla sütunları istemiyorsanız, "fool"ve "buffoon"(ihtiva yani o fooda eşleşti ve kaldırılacak) bir alt dize olarak.)
Daha az güvenli seçenekler, etkileşimli kullanım için iyi:
- Önümüzdeki iki deyimler de çalışacaktır eğer df3bir sütun eşleşmelerini içerir"foo" - ama eğer bu olmuyorsa bir olasılıkla-beklenmedik bir şekilde başarısız olur. Örneğin, var olmayan sütunu aramak için bunlardan herhangi birini kullanırsanız "bar", sıfır satırlı bir data.table elde edersiniz.
Sonuç olarak, örneğin bir veri görüntülemek isteyebilecek etkileşimli kullanım için en uygun olanlardır. Örneğin eksi alt dizeyi içeren adlara sahip herhangi bir sütun "foo". Programlama amacıyla (veya sütunları df3bir kopyadan ziyade gerçekten kaldırmak istiyorsanız), Yöntem 1, 2a ve 2b gerçekten en iyi seçeneklerdir.
# Method 4:
df3[, .SD, .SDcols = !patterns("^foo$")]
Son olarak, yaklaşımı kullanan yaklaşımlar vardır with=FALSE, ancak data.tableyavaş yavaş bu argümanı kullanmaktan uzaklaşmaktadır; burada göstererek gerçekten ihtiyacınız olması durumunda seçeneğin var olduğunu bilirsiniz:
# 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]
dtyerine data.table adını vermek daha net olurdudf3...