[英]R data.table: sum of vectors in seperate columns
我有一個帶有向量的data.table或實際上在列單元格內帶有向量的列表,即:
testDATA <- data.table('COLUMN_1' = list(1:4, 11:14, 21:24),
'COLUMN_ABC' = list(5:8, 25:28, 15:18),
'COLUMN1342' = list(2:5, 32:35, 22:25))
另外,我有一個帶有列名的向量,我想對其向量元素進行求和,即:
columnsToSum <- c('COLUMN_ABC', 'COLUMN1342')
我如何才能將列添加到data.table中,該列將對columnToSum中定義的列中的向量元素求和,以便在第一行中具有向量c(6,8,10,12)? 我知道我可以將兩個向量求和:
testDATA[, sumCol := list(Map(function(x,y) x + y, get('COLUMN_ABC'), get('COLUMN1342')))]
盡管事實是我有所有列,但我應該在columnsToSum向量中求和。 有任何想法嗎?
我認為這應該為您工作
testDATA[, sumCol := Reduce(function(a,b) Map(`+`,a,b), .SD),
.SDcols=columnsToSum]
我們使用.SD
從數據表中獲取一組列,然后使用Reduce()
進行順序累加,並使用Map()
分別對各行進行累加。 它將與超過2列一起使用
columnsToSum <- names(testDATA)
testDATA[, sumCol := Reduce(function(a,b) Map(`+`,a,b), .SD), .SDcols=columnsToSum]
testDATA
# COLUMN_1 COLUMN_ABC COLUMN1342 sumCol
# 1: 1,2,3,4 5,6,7,8 2,3,4,5 23,31,39,47
# 2: 11,12,13,14 25,26,27,28 32,33,34,35 193,201,209,217
# 3: 21,22,23,24 15,16,17,18 22,23,24,25 153,161,169,177
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.