首页 > 解决方案 > 如何使用 data.table 引用 R 中的任意名称列

问题描述

我正在尝试使用以下代码进行一些回归匹配:

library(data.table)
colCount = 3
Test = data.table(ID=c(1,2,3),R1=c(1,1,1),R2=c(1,2,3),R3=c(4,2,1))
Compare = data.table(ID=c(1,2,3),R1=c(2,1,2),R2=c(6,2,3),R3=c(1,1,4))
# Example, in real run, I know colCount will give the arbitrary number of data columns in Test and Compare; I will not know their names

for (i in 1:nrow(Compare)){
  Test[,paste0('Factor_',i):=sum(Compare[i,2:(1+colCount)]*.SD)/sum(.SD*.SD),.SDcols=2:(1+colCount),by=1:nrow(Test)]

  Test[,paste0('Error_',i) :=sum((Compare[i,2:(1+colCount)]-.SD*paste0('Factor_',i))^2),.SDcols=2:(1+colCount),by=1:nrow(Test)]
}

倒数第二行的粘贴不像我希望的那样工作;有没有更好的方法来引用具有生成名称的列?

更一般地说,有没有更聪明的方法来做到这一点?我正在做的逐行求和方法似乎太复杂了,但我无法使用矩阵数学或 lapply 来代替它

标签: rdata.table

解决方案


推荐阅读