-2
data(iris)
table1<-iris[,-5]
a<-list()
a[[1]]<-table1[1,]
a[[2]]<-table1[2,-2]
Reduce("+",a)
行不通的!我怎樣才能解決這個問題?不同程度的和表?如何減少不同尺寸的表?
data(iris)
table1<-iris[,-5]
a<-list()
a[[1]]<-table1[1,]
a[[2]]<-table1[2,-2]
Reduce("+",a)
行不通的!我怎樣才能解決這個問題?不同程度的和表?如何減少不同尺寸的表?
我們創建交叉名的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
你可以嘗試總結合並表中的列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
這工作很不錯,使路口值的總和,但我該怎麼做,如果我有很多不同的組合,我想計算所有的總和? –
@VivianRibeiro對於這些情況,使用'setdiff'並獲得那些不相交的元素,並將其分配給NA – akrun
@VivianRibeiro謝謝你的筆記。你也可以勾選[here](https://stackoverflow.com/help/someone-answers) – akrun