2010-07-07 6 views
24

Je me demande comment utiliser apply sur un tableau multidimensionnel. J'ai quelque chose comme ce qui suit:Utilisation de apply sur un tableau multidimensionnel dans R

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

Je voudrais prendre la moyenne de ces tranches pour obtenir un 2 par 2 matrice. Toute façon que je viens avec est assez kludgy.

J'espérais pouvoir utiliser appliquer, comme je le ferais si je voulais le dire moyenne des colonnes d'une matrice:

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

Mais cela ne semble pas fonctionner comme je pense qu'il pourrait avec des tableaux 3D:

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

J'apprécie vos suggestions.

Répondre

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

Parfait! Et c'était juste là dans le fichier d'aide pour array, mais je ne l'ai pas vu jusqu'à ce que vous l'ayez indiqué, même après l'avoir regardé. Je vous remercie! – TJB

+8

En général, le paramètre 'margin' de' apply' doit être un vecteur de dimensions que vous voulez conserver plutôt que de réduire. – mbq

+1

qu'en est-il: mean.data.frame (A)? –

Questions connexes