我有一个包含三个矩阵的列表:
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)