假设我们有一个由矩阵元素构成的列表,如何非常简便地计算列表中所有矩阵的均值?
首先生成两个矩阵:
A = matrix(1:9, 3, 3)
A
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
B = matrix(1, 3, 3)
B
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
然后将他们组成一个list,达到我们前提要求:
my.list = list(A, B)
my.list
[[1]]
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
[[2]]
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
Reduce("+", my.list) / length(my.list)
[,1] [,2] [,3]
[1,] 1.0 2.5 4.0
[2,] 1.5 3.0 4.5
[3,] 2.0 3.5 5.0
最后直接对列表使用Reduce("+", my.list) / length(my.list),就可以得到列表中所有矩阵的平均了。
还有第二种方案,就是使用array将list转为3D的array,具体如下:
ll <- replicate( 3 , matrix( sample(5,16,repl=TRUE