150

の数値インデックス (位置) のベクトルを使用して複数の列を選択するにはどうすればよいdata.tableでしょうか?

これは、 で行う方法ですdata.frame

df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
#   b c
# 1 2 3
4

5 に答える 5

191

data.table のバージョンの場合>= 1.9.8、次のすべてが正常に機能します。

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 のバージョン< 1.9.8(数値列の選択でを使用する必要があるwith = FALSE)については、この回答の以前のバージョンを参照してください。v1.9.8のニュース、潜在的に重大な変更、ポイント3も参照してください。

于 2012-11-14T17:28:02.677 に答える
45

.SD少し冗長ですが、隠し変数の使用に慣れてきました。

b<-data.table(a=1,b=2,c=3,d=4)
b[,.SD,.SDcols=c(1:2)]

少し面倒ですが、他の data.table 機能を失うことはないので (私はそうは思いません)、結合テーブルなどの他の重要な機能を引き続き使用できるはずです。

于 2015-05-05T20:28:45.483 に答える
3

@トム、この解決策を指摘してくれてありがとう。それは私にとってとてもうまくいきます。

印刷と上記の例から 1 つの列を除外する方法を探していました。2番目の列を除外するには、次のようなことができます

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)]
于 2015-11-04T08:46:04.167 に答える