113

可能重复:
可变地选择/分配给 data.table 中的字段

在以下示例中,我正在创建一个列名为“x”和“v”的数据表</p>

library('data.table')
DT <- data.table(x = c("b","b","b","a","a"), v = rnorm(5))

我可以通过以下方式访问“x”列的值:

DT[ , x]
# [1] "b" "b" "b" "a" "a"

但是如果我想通过一个变量来访问,它就行不通

temp <- "x"
DT[ , temp]
# [1] "x"

会有多个列,我将不得不为其中几个选择值。我将通过 R 模块提供这些列名。

没关系,我明白了,应该是:

DT[ , get(temp)]
4

1 回答 1

62

使用quote()andeval()函数将变量传递给j. 当你这样做时,你不需要在列名上加上双引号,因为quote()-ed 字符串将在DT[]

temp <- quote(x)
DT[ , eval(temp)]
# [1] "b" "b" "b" "a" "a"

使用单个列名,结果是一个向量。如果您想要 data.table 结果或多列,请使用列表形式

temp <- quote(list(x, v))
DT[ , eval(temp)]
#   x           v
# 1: b  1.52566586
# 2: b  0.66057253
# 3: b -1.29654641
# 4: a -1.71998260
# 5: a  0.03159933
于 2012-09-26T17:37:51.803 回答