矩阵列表中每个元素的平均值

upa*_*ove 5 r

我有一个包含三个矩阵的列表:

a<-matrix(runif(100))
b<-matrix(runif(100))
c<-matrix(runif(100))

mylist<-list(a,b,c)
Run Code Online (Sandbox Code Playgroud)

我想获得三个矩阵中每个元素的平均值.

我尝试过:aaply(laply(mylist, as.matrix), c(1, 1), mean)但是这会返回每个矩阵的均值,而不是像每个矩阵那样取均值rowMeans().

Jil*_*ina 15

也许你想要的是:

> set.seed(1)
> a<-matrix(runif(4)) 
> b<-matrix(runif(4))
> c<-matrix(runif(4))
> mylist<-list(a,b,c)  # a list of 3 matrices 
> 
> apply(simplify2array(mylist), c(1,2), mean)
          [,1]
[1,] 0.3654349
[2,] 0.4441000
[3,] 0.5745011
[4,] 0.5818541
Run Code Online (Sandbox Code Playgroud)

矢量c(1,2)MARGIN在应用调用表示该功能mean应该适用于行和列(两者兼而有之),见?apply进一步的细节.

另一种选择是使用Reduce功能

> Reduce("+", mylist)/ length(mylist)
          [,1]
[1,] 0.3654349
[2,] 0.4441000
[3,] 0.5745011
[4,] 0.5818541
Run Code Online (Sandbox Code Playgroud)

  • +1我没想到使用`simplify2array`. (2认同)