2017-06-12 116 views

回答

1

我們創建交叉名的vector,並獲得sum

nm1 <- Reduce(intersect,lapply(a, names)) 
Reduce(`+`, lapply(a, `[`, nm1)) 
# Sepal.Length Petal.Length Petal.Width 
#1   10   2.8   0.4 

如果我們需要的所有

nm2 <- Reduce(union, lapply(a, names)) 
Reduce(`+`, lapply(a, function(x) { x[setdiff(nm2, names(x))] <- 0; x})) 
# Sepal.Length Sepal.Width Petal.Length Petal.Width 
#1   10   4.9   1.6   0.2 
+0

這工作很不錯,使路口值的總和,但我該怎麼做,如果我有很多不同的組合,我想計算所有的總和? –

+0

@VivianRibeiro對於這些情況,使用'setdiff'並獲得那些不相交的元素,並將其分配給NA – akrun

+0

@VivianRibeiro謝謝你的筆記。你也可以勾選[here](https://stackoverflow.com/help/someone-answers) – akrun

2

你可以嘗試總結合並表中的列sum

colSums(Reduce(function(x, y) merge(x, y, all=TRUE), a), na.rm=TRUE) 
#Sepal.Length Petal.Length Petal.Width Sepal.Width 
#  10.0   2.8   0.4   3.5