Salah satu dari yang berikut ini akan menghapus kolom foodari tabel data 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 juga mendukung sintaks berikut:
## Method 3 (could then assign to df3,
df3[, !"foo"]
meskipun jika Anda benar-benar ingin menghapus kolom "foo"dari df3(bukan hanya mencetak tampilan df3kolom minus "foo") Anda benar-benar ingin menggunakan Metode 1 sebagai gantinya.
(Perhatikan bahwa jika Anda menggunakan metode yang mengandalkan grep()atau grepl(), Anda perlu mengatur pattern="^foo$"daripada "foo", jika Anda tidak ingin kolom dengan nama seperti "fool"dan "buffoon"(yaitu yang mengandung foosebagai substring) juga dicocokkan dan dihapus.)
Opsi yang kurang aman, baik untuk penggunaan interaktif:
Dua idiom berikutnya juga akan berfungsi - jika df3berisi kolom yang cocok"foo" - tetapi akan gagal dengan cara yang mungkin tidak terduga jika tidak. Jika, misalnya, Anda menggunakan salah satu dari mereka untuk mencari kolom yang tidak ada "bar", Anda akan berakhir dengan tabel data baris-nol.
Sebagai konsekuensinya, mereka benar-benar paling cocok untuk penggunaan interaktif di mana orang mungkin, misalnya, ingin menampilkan data "foo". Untuk tujuan pemrograman (atau jika Anda ingin benar-benar menghapus kolom dari df3daripada dari salinannya), Metode 1, 2a, dan 2b benar-benar merupakan pilihan terbaik.
# Method 4:
df3[, .SD, .SDcols = !patterns("^foo$")]
Terakhir ada pendekatan menggunakan with=FALSE, meskipun data.tablesecara bertahap menjauh dari menggunakan argumen ini sehingga sekarang tidak disarankan di mana Anda bisa menghindarinya; ditampilkan di sini sehingga Anda tahu opsi ada jika Anda benar-benar membutuhkannya:
# 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]
dtbukannyadf3...