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

Using a variable to specify a column name within `data.table`

我想在对列进行操作时使用变量来指定列名。

举个例子,我可以有一个名为 Set1 的 data.table,我想在其中将 x 列的 class 更改为数字。我可能会

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

这会起作用,但现在我不想对列名进行硬编码,而是使用一个变量,我们称它为 Y(之前定义为 Y="x"

当我使用

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

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

数据:

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

一个解决方案是在 data.table:

中使用 quoteeval
y = quote(x)
dt[,eval(y):=as.numeric(eval(y))]

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