我们会获得相同大小的 n data.frame
或matrix
列表( r c ),我们需要在所有表格的每个单元格上应用一个函数,并将结果作为相同大小的data.frame
或matrix
( r by c 再次)。
For example:
a <- matrix(0:5, 2, 3)
b <- matrix(5:0, 2, 3)
c <- matrix(1, 2, 3)
l <- list(a, b, c)
foo(l, mean) # should retrun
2 2 2
2 2 2
# For instance the top-left cell of 3 given matrices are 0, 5, and 1, and the mean is 2
# For all other cells, the mean of the values in 3 matrices will be 2
有很多方法可以完成这项工作,但我正在寻找一个非常快速和简短的解决方案
答案 0 :(得分:2)
这是使用simplify2array
函数
apply(simplify2array(l),c(1,2),mean)
[,1] [,2] [,3]
[1,] 2 2 2
[2,] 2 2 2
请注意,simplify2array(l)
与abind(l,along = 3)
答案 1 :(得分:1)
使用 abind 包:
library(abind)
apply(abind(l,along = 3),c(1,2),mean)
当然还有更快的版本:
rowMeans(abind(l,along = 3),dims = 2)