r - R数据表的总和列,其名称存储在向量中
问题描述
我有以下数据表:
dt_test <- data.table(day = 1:3, a = c(1,1,1), b = c(2,2,2))
day a b
1: 1 1 2
2: 2 1 2
3: 3 1 2
另外,我有一个向量,其中包含要添加的列:
vecCols <- c("a", "b")
我想sums
在我的数据表中有一个新列,在这种情况下只是sums := a + b
,或者 vecCols 中所有列的总和(来自 vecCols 的输入在不同情况下可能会有所不同,它是动态填充的)
此示例中的输出应如下所示:
day a b sums
1: 1 1 2 3
2: 2 1 2 3
3: 3 1 2 3
解决方案
您可以rowSums
在相关子集上使用:
dt_test <- data.table::data.table(day = 1:3, a = c(1,1,1), b = c(2,2,2))
vecCols <- c("a", "b")
dt_test[,sums := rowSums(.SD[,vecCols, with = FALSE])]
或者
dt_test[,sums := rowSums(.SD), .SDcols = vecCols]
dt_test
#> day a b sums
#> 1: 1 1 2 3
#> 2: 2 1 2 3
#> 3: 3 1 2 3
推荐阅读
- javascript - 如何将多个元素移动到数组的开头?
- c# - 无法建立连接,因为目标机器活动拒绝它?
- javascript - 如何以较小的增量滚动水平引导选项卡
- python - 如何在 Python 中调试 iOS Selenium 测试
- reactjs - useState 更新状态值,但将旧值作为参数传递给函数
- ios - 是否可以快速从 CoreData 中获取数组?
- python - 是否可以从程序外部覆盖方法?
- django - Django REST 框架:没有 PK 的 URL
- c# - 如何修复 Asp.net-mvc 网站(使用文化和 .resx 文件)突然改变语言?
- javascript - Swiper滑块+动画CSS