簡體   English   中英

R data.table:單獨列中向量的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM