【发布时间】:2019-12-30 17:59:32
【问题描述】:
我在 R 中有一个如下所示的数据表
DT = data.table(a = c(1,2,3,4,5), a_mean = c(1,1,2,2,2), b = c(6,7,8,9,10), b_mean = c(3,2,1,1,2))
我想再创建两列 a_final 和 b_final,分别定义为 a_final = (a - a_mean) 和 b_final = (b - b_mean)。在我的实际用例中,可能会有大量这样的列对,我想要一个本着 R 数据表精神的可扩展解决方案。
我尝试了一些类似
的方法DT[,paste0(c('a','b'),'_final') := lapply(.SD, function(x) ((x-get(paste0(colnames(.SD),'_mean'))))), .SDcols = c('a','b')]
但这并不完全奏效。知道如何访问 lapply 语句中正在处理的列的列名吗?
【问题讨论】:
标签: r data.table