优雅的方式在R中单元格添加一堆类似的数据帧?

Ste*_*tin 4 r dplyr

我有一个类似类型的1000个数据框列表

dfs<-list()
for (i in 1:1000) {
  dfs[[i]]<-iris[sample(1:length(iris$Sepal.Length),80),-5]
}
Run Code Online (Sandbox Code Playgroud)

每个都是80乘4的数据帧.我想以单元方式添加(或任何其他操作)所有这些数据帧,并将输出作为80乘4的数据帧,每个单元格包含1000个单元格的总和,或者可能是1000个单元格的平均值?

Moo*_*per 8

你可以使用Reduce:

Reduce(`+`, dfs)
#     Sepal.Length Sepal.Width Petal.Length Petal.Width
# 122         28.0        13.2         18.7         6.1
# 87          26.8        14.9         15.1         4.5
# 100         30.8        14.6         23.1         7.7
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它很简单,因为可以使用+矢量化函数(如paste)添加lhs和rhs元素:

data.frame(Reduce(function(x,y) Map(paste,x,y), dfs))
#          Sepal.Length         Sepal.Width        Petal.Length       Petal.Width
# 1     5.6 6.2 5 5.2 6 2.8 2.2 3.3 2.7 2.2   4.9 4.5 1.4 3.9 4   2 1.5 0.2 1.4 1
# 2   6.7 4.6 4.6 5.9 5   3.1 3.4 3.1 3 2.3 4.7 1.4 1.5 4.2 3.3 1.5 0.3 0.2 1.5 1
# 3 5.7 5.8 6.7 6.1 6.5   2.8 2.7 3.3 3 2.8 4.1 4.1 5.7 4.6 4.6 1.3 1 2.5 1.4 1.5
Run Code Online (Sandbox Code Playgroud)

数据

dfs<-list()
for (i in 1:5) {
  dfs[[i]]<-iris[sample(1:nrow(iris),3),-5]
}
Run Code Online (Sandbox Code Playgroud)