首页 文章

使用变量[duplicate]在data.table中传递列名

提问于
浏览
72

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

在下面的示例中,我创建了一个列名为“x”和“v”的数据表

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)]

1 回答

  • 43

    使用 quote()eval() 函数将变量传递给 j . 当你这样做时,你不需要对列名称使用双引号,因为 quote() -ed字符串将在 DT[] 内进行求值

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

    使用单个列名称,结果是向量 . 如果需要data.table结果或多个列,请使用list form

    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
    

相关问题