【发布时间】:2018-01-12 21:12:50
【问题描述】:
我注意到当 x 也是同一个数据表中的一列时,get(x) 在 R 数据表中不起作用。请参阅下面的代码 sn-p。在编写将数据表作为输入的 R 函数时,这很难完全避免。这是 R data.table 包中的错误吗?谢谢!
library(data.table)
dt = data.table(x=1:3, y=2:4)
var = 'y'
x = 'y'
dt[, 3*get(var)] # [1] 6 9 12
dt[, 3*get(x)] # Error in get(x): invalid first argument
【问题讨论】:
-
有没有其他人对此评估感到困惑:
dt[, 3*get(var)]?get(var) -> "y";3 * "y"?例如,dt[,3*"y"]给出错误... -
在我看来
data.table实现中的一个错误。很明显,x被称为对象,它应该优先于列名。 -
@RichScriven 我不确定这是否是一个真正的重复,在那个问题中,参考是在
i中评估的,而这个问题是在j中评估的。我不确定,但通过深入阅读data.table文档,我得到的印象是行为可能完全不同。
标签: r data.table