Yanıtlar:
Data.table sürümleri >= 1.9.8
için aşağıdakilerin hepsi işe yarar :
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
Data.table sürümleri < 1.9.8
için (sayısal sütun seçiminin kullanılması gerekir with = FALSE
), bu cevabın önceki sürümüne bakın . Ayrıca bkz . V1.9.8'deki HABERLER , POTANSİYEL KIRICI DEĞİŞİKLİKLER, nokta 3.
DT[,list(b:c)
, sütunları doğrudan veri tablosunda dönüştürmeyi uygun bulduğum için, örneğin yapabilirim DT[,list(1/b,2*c)]
, ancak bu ile çalışmaz.
with=FALSE
Bu durumda pakette bir değişiklik yapmak gereksiz olacaktır : github.com/Rdatatable/data.table/issues/…
data.frame
uyumlu bir yolu yoktur with=FALSE
. Ancak, 3 hakkında hafta önce itibariyle gelişimi versiyonu data.table gibi çağrılara değiştirildi dt[, 2]
, dt[, 2:3]
, dt[, "b"]
, ve dt[, c("b", "c")]
onlar ile olduğu gibi aynı davranırlar data.frame
s olmadan açıkça ayarlamak zorunda with=FALSE
. O müthiş! Değişikliği açıklayan HABER girişi de dahil olmak üzere ilgili taahhüt için buraya bakın .
Biraz ayrıntılı, ama gizli .SD
değişkeni kullanmaya alıştım .
b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]
Biraz güçlük çekiyor, ancak diğer verilerde kaybolmuyorsunuz. Tablo özelliklerini (sanmıyorum), bu yüzden yine de birleştirme tabloları gibi diğer önemli işlevleri kullanabilmelisiniz.
V1.10.2'den itibaren, ..
dt <- data.table(a=1:2, b=2:3, c=3:4)
keep_cols = c("a", "c")
dt[, ..keep_cols]
dt[, !..keep_cols]
ve dt[, -..keep_cols]
beklendiği gibi çalışıyor!
@Tom, bu çözümü gösterdiğin için çok teşekkür ederim. Benim için harika çalışıyor.
Sadece bir sütunu baskıdan ve yukarıdaki örnekten hariç tutmanın bir yolunu arıyordum. İkinci sütunu hariç tutmak için böyle bir şey yapabilirsiniz
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"]
vedt[,"a", with=FALSE]
gerçekten ne kadar yararlı bir seçenek olduğunu görmek için.