La media de cada elemento de una lista de matrices

Tengo una lista con tres matrices:

a<-matrix(runif(100)) b<-matrix(runif(100)) c<-matrix(runif(100)) mylist<-list(a,b,c) 

Me gustaría obtener la media de cada elemento en las tres matrices.

Intenté: aaply(laply(mylist, as.matrix), c(1, 1), mean) pero esto devuelve los promedios de cada matriz en lugar de tomar la media de cada elemento como lo rowMeans() .

Quizás lo que quieres es:

 > 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 

El vector c(1,2) para MARGIN en la llamada de solicitud indica que la mean la función se debe aplicar a las filas y columnas (ambas a la vez), ver ?apply más detalles.

Otra alternativa es usar la función Reduce

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

Tu pregunta no está clara.

Para la media de todos los elementos de cada matriz:

 sapply(mylist, mean) 

Para la media de cada fila de cada matriz:

 sapply(mylist, rowMeans) 

Para la media de cada columna de cada matriz:

 sapply(mylist, colMeans) 

Tenga en cuenta que sapply simplificará automáticamente los resultados a un vector o matriz, si es posible. En el primer caso, el resultado será un vector, pero en el segundo y tercero, puede ser una lista o matriz.

Ejemplo:

 a <- matrix(1:6,2,3) b <- matrix(7:10,2,2) c <- matrix(11:16,3,2) mylist <- list(a,b,c) > mylist [[1]] [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [[2]] [,1] [,2] [1,] 7 9 [2,] 8 10 [[3]] [,1] [,2] [1,] 11 14 [2,] 12 15 [3,] 13 16 

Resultados:

 > sapply(mylist, mean) [1] 3.5 8.5 13.5 > sapply(mylist, rowMeans) [[1]] [1] 3 4 [[2]] [1] 8 9 [[3]] [1] 12.5 13.5 14.5 > sapply(mylist, colMeans) [[1]] [1] 1.5 3.5 5.5 [[2]] [1] 7.5 9.5 [[3]] [1] 12 15