我想在操作时使用变量来指定列的名称。
举一个例子,我可能有一个名为Set1
的data.table,我希望将列x
的类更改为数字。我可以做
Set1New=transform(Set1,x=as.numeric(x))
这样可行,但现在我不想对列名进行硬编码,而是使用变量,我们称之为Y
(之前已将其定义为Y="x"
。
当我使用
时,如何告诉R使用变量的内容而不是查找列Y
Set1New=transform(Set1,Y=as.numeric(Y))
我知道,例如存在setkey
和setkeyv
,其中setkeyv
解决了这个问题。变换有类似的解决方案吗? 或者,我想要更好的是,是否有使用变量内容而不是变量名的一般解决方案?
答案 0 :(得分:2)
数据强>:
library(data.table)
dt = data.table(col1=letters[1:2], x=c('1','2'))
一种解决方案是在quote
中使用eval
和data.table
:
y = quote(x)
dt[,eval(y):=as.numeric(eval(y))]
#> is.numeric(dt$x)
#[1] TRUE