我想在对其进行操作时使用变量来指定列的名称。
举个例子,我可能有一个名为 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
解决了这个问题。是否有类似的转换解决方案? 或者,我更想要的是,是否有一个通用的解决方案来使用变量的内容而不是变量名称?
最佳答案
数据:
library(data.table)
dt = data.table(col1=letters[1:2], x=c('1','2'))
一种解决方案是在 data.table
中使用 quote
和 eval
:
y = quote(x)
dt[,eval(y):=as.numeric(eval(y))]
#> is.numeric(dt$x)
#[1] TRUE
关于r - 使用变量指定 `data.table` 范围内的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430135/