r - 如何使用 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 来代替它
解决方案
推荐阅读
- javascript - 时刻获取时间段 AM//PM 本地化
- .net - 如何为 .NET Standard 创建“NuGet 包管理项目”?
- ruby-on-rails - Rails:收集连接表出现在两个查询中的记录
- django - Django Cryptographic "signing.loads(value)" 给 None 相同的 SECRET_KEY
- google-cloud-run - GKE 上 Cloud Run 上的 Websocket 请求错误
- sql - SQL 到 SSAS 计算脚本
- android - 如何在 Kotlin 的卡片视图中设置属性
- python - 使用 PIL(LOW) 绘制重叠的轮廓文本
- c# - 无法在 Excel 单元格中输入“空”文本
- xml - 有什么方法可以运行 XSLT 并使用 Apache fop 在线生成 PDF?