我想对data.table中的列列表执行一些操作。 我在这里举个例子。实际上我在data.table(DT)中有大约30个变量。这就是为什么有一些行可以对我感兴趣的变量运行循环。 由于我想保留输入DT,我会使用DT2< - DT进行复制以对其进行操作。 最终这可以在最初的一个DT上完成。 错误消息显示:
* eval中的错误(DT [,(var)])* eval(DT [,variable6]):非数字 二元运算符的参数*
我还没在论坛上找到合适的答案。 很抱歉我提出了我的问题。不习惯!
感谢您的帮助。
library(data.table)
DT <- data.table(
variable1 = c("a", "b", "c", "d", "e"),
variable2 = 1:5,
variable3 = c(1, 2, 5, 6, 8),
variable4 = c(1, 2, 5, 6, 8),
variable5 = c(1, 2, 5, 6, 8),
variable6 = c(12, 14, 18, 100, 103),
variable7 = c(0.02, 0.02, 0.02, 0.02, 0.02))
cols = sapply(DT, is.numeric)
cols = cols[-c(6, 7)]
cols = names(cols)[cols]
DT2 <- DT
for(var in cols) {
DT2[, (var)] == eval(DT[, (var)]) * eval(DT[, variable6]) / eval(DT[variable7])
}