2010-07-07 15 views
24

Me pregunto cómo usar apply en una matriz multidimensional. Tengo algo como lo siguiente:Usando apply en una matriz multidimensional en R

A <- array(0, c(2, 2, 5)) 
for(i in 1:5) { 
    A[, , i] <- matrix(rnorm(4), 2, 2) 
} 

me gustaría tomar el promedio de esas porciones para obtener una única matriz de 2 por 2. Cualquier forma que se me ocurra es bastante kludgy.

Tenía la esperanza de poder utilizar aplica, al igual que lo haría si quería el que la media de las columnas de una matriz:

B <- matrix(rnorm(10), 5, 2) 
B.mean <- apply(B, 2, mean) 

Pero esto no parece funcionar de la manera que creo que podría con matrices 3D:

A.mean <- apply(A, 3, mean) 

Agradezco sus sugerencias.

Respuesta

28
A.mean <- apply(A, c(1,2), mean) 
+0

Perfecto! Y estaba justo allí en el archivo de ayuda para array, pero no lo vi hasta que lo señaló, incluso lo había mirado. ¡Gracias! – TJB

+8

En general, el parámetro 'margin' de' apply' debe ser un vector de dimensiones que desee conservar, en lugar de colapsar. – mbq

+1

¿qué tal: mean.data.frame (A)? –

Cuestiones relacionadas