使用变量在`data.table`中指定列名

时间:2015-02-10 11:07:49

标签: r data.table

我想在操作时使用变量来指定列的名称。

举一个例子,我可能有一个名为Set1的data.table,我希望将列x的类更改为数字。我可以做

Set1New=transform(Set1,x=as.numeric(x))

这样可行,但现在我不想对列名进行硬编码,而是使用变量,我们称之为Y(之前已将其定义为Y="x"

当我使用

时,如何告诉R使用变量的内容而不是查找列Y
Set1New=transform(Set1,Y=as.numeric(Y))

我知道,例如存在setkeysetkeyv,其中setkeyv解决了这个问题。变换有类似的解决方案吗? 或者,我想要更好的是,是否有使用变量内容而不是变量名的一般解决方案?

1 个答案:

答案 0 :(得分:2)

数据

library(data.table)
dt = data.table(col1=letters[1:2], x=c('1','2'))

一种解决方案是在quote中使用evaldata.table

y = quote(x)
dt[,eval(y):=as.numeric(eval(y))]

#> is.numeric(dt$x)
#[1] TRUE