Jawaban:
Untuk versi data.tabel >= 1.9.8
, berikut ini semua berfungsi:
library(data.table)
dt <- data.table(a = 1, b = 2, c = 3)
# select single column by index
dt[, 2]
# b
# 1: 2
# select multiple columns by index
dt[, 2:3]
# b c
# 1: 2 3
# select single column by name
dt[, "a"]
# a
# 1: 1
# select multiple columns by name
dt[, c("a", "b")]
# a b
# 1: 1 2
Untuk versi data.tabel < 1.9.8
(untuk pemilihan kolom numerik mana yang memerlukan penggunaan with = FALSE
), lihat versi sebelumnya dari jawaban ini. Lihat juga BERITA pada v1.9.8, PERUBAHAN POTENSIAL BREAKING, poin 3.
DT[,list(b:c)
, ketika saya merasa nyaman untuk mengubah kolom secara langsung di tabel data, misalnya saya bisa lakukan DT[,list(1/b,2*c)]
, tetapi ini tidak bekerja dengan.
with=FALSE
tidak perlu dalam kasus ini: github.com/Rdatatable/data.table/issues/…
data.frame
cara yang kompatibel untuk digunakan with=FALSE
. Namun, karena dari sekitar 3 minggu yang lalu, versi pengembangan data.table telah dimodifikasi untuk panggilan seperti dt[, 2]
, dt[, 2:3]
, dt[, "b"]
, dan dt[, c("b", "c")]
berperilaku sama seperti yang mereka lakukan di dengan data.frame
s tanpa harus secara eksplisit mengatur with=FALSE
. Luar biasa! Lihat di sini untuk komit tertentu, termasuk entri BERITA yang menggambarkan perubahan.
Ini agak bertele-tele, tetapi saya sudah terbiasa menggunakan .SD
variabel tersembunyi .
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Ini sedikit merepotkan, tetapi Anda tidak kehilangan fitur data.table lainnya (saya tidak berpikir), jadi Anda harus tetap dapat menggunakan fungsi penting lainnya seperti bergabung dengan tabel dll.
Dari v1.10.2 dan selanjutnya, Anda juga dapat menggunakan ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
dt[, !..keep_cols]
dan dt[, -..keep_cols]
berfungsi seperti yang diharapkan!
@ Tom, terima kasih banyak telah menunjukkan solusi ini. Ini sangat bagus untuk saya.
Saya mencari cara untuk mengecualikan satu kolom dari pencetakan dan dari contoh di atas. Untuk mengecualikan kolom kedua Anda dapat melakukan sesuatu seperti ini
library(data.table)
dt <- data.table(a=1:2, b=2:3, c=3:4)
dt[,.SD,.SDcols=-2]
dt[,.SD,.SDcols=c(1,3)]
dt[,"a"]
dandt[,"a", with=FALSE]
untuk melihat apa opsi yang bermanfaat itu sebenarnya.