0

我们得到一个n data.framematrix相同大小的列表(rc),我们需要对所有表的每个单元格应用一个函数,并将结果作为 adata.framematrix相同大小(再次rc)。

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

有很多方法可以完成这项工作,但我正在寻找一个非常快速和简短的解决方案

4

2 回答 2

2

这是使用simplify2array函数的 R 基础解决方案

 apply(simplify2array(l),c(1,2),mean)
     [,1] [,2] [,3]
[1,]    2    2    2
[2,]    2    2    2

请注意,simplify2array(l)abind(l,along = 3)

于 2013-03-13T15:59:14.703 回答
1

使用绑定包:

library(abind)
apply(abind(l,along = 3),c(1,2),mean)

当然还有更快的版本:

rowMeans(abind(l,along = 3),dims = 2)
于 2013-03-13T15:16:24.317 回答