Bagaimana kita dapat memilih beberapa kolom menggunakan vektor indeks numerik (posisi) mereka data.table
?
Inilah yang akan kami lakukan dengan data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
jamborta
sumber
sumber
dt[,"a"]
dandt[,"a", with=FALSE]
untuk melihat apa opsi yang bermanfaat itu sebenarnya.DT[,list(b:c)
, ketika saya merasa nyaman untuk mengubah kolom secara langsung di tabel data, misalnya saya bisa lakukanDT[,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 digunakanwith=FALSE
. Namun, karena dari sekitar 3 minggu yang lalu, versi pengembangan data.table telah dimodifikasi untuk panggilan sepertidt[, 2]
,dt[, 2:3]
,dt[, "b"]
, dandt[, c("b", "c")]
berperilaku sama seperti yang mereka lakukan di dengandata.frame
s tanpa harus secara eksplisit mengaturwith=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 .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.
sumber
Jika Anda ingin menggunakan nama kolom untuk memilih kolom, cukup gunakan
.()
, yang merupakan alias untuklist()
:sumber
Dari v1.10.2 dan selanjutnya, Anda juga dapat menggunakan
..
sumber
dt[, !..keep_cols]
dandt[, -..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
sumber