tags:

views:

79

answers:

1

I am wondering how to use apply on a multidimensional array. I have something like the following:

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

I would like to take the average of those slices to get a single 2 by 2 matrix. Any way I come up with is pretty kludgy.

I was hoping to be able to use apply, like I would if I wanted the average say of the columns of a matrix:

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

But this doesn't seem to work the way I think it might with 3D arrays:

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

I appreciate your suggestions.

+4  A: 
A.mean <- apply(A, c(1,2), mean)
ncray
@ncray. Perfect! And it was right there in the help file for array, but I didn't see it until you pointed it out, even having looked at it. Thank you!
TJB
In general, the `margin` parameter of `apply` should be a vector of dimensions you want to preserve, rather than collapse.
mbq
what about: mean.data.frame(A) ?
ran2