如何减少不同大小的表格? 数据(iris) 表1

如何减少不同大小的表格? 数据(iris) 表1,r,R,我们创建了一个相交名称的向量,并得到了和 data(iris) table1<-iris[,-5] a<-list() a[[1]]<-table1[1,] a[[2]]<-table1[2,-2] Reduce("+",a) 您可以尝试对合并表的列求和: nm2 <- Reduce(union, lapply(a, names)) Reduce(`+`, lapply(a, function(x) { x[setdiff(nm2, names(x))] &l

我们创建了一个相交名称的
向量
,并得到了

data(iris)
table1<-iris[,-5]
a<-list()
a[[1]]<-table1[1,]
a[[2]]<-table1[2,-2]
Reduce("+",a) 

您可以尝试对合并表的列求和:

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

这对于求交集值的和非常有效,但是如果我有很多不同的组合,并且我想计算所有值的和,我该怎么做呢?@VivianRibeiro对于这些情况,使用
setdiff
获取那些不相交的元素并将其分配给NA
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
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