mean of 3D arrays
Hi:
There are a few ways to do this. If you only have a few arrays, you
can simply add them and divide by the number of arrays. If you have a
large number of such arrays, this is inconvenient, so an alternative
is to ship the arrays into a list and use the Reduce() function. For
your example,
L <- list(x1, x2, x3)
Reduce('+', L)/length(L)
would work. If you have many such arrays in separate files, you can
always use lapply() in conjunction with a suitable read function with
an input vector that contains the file names to be read, of the
general form
L <- lapply(<vector of file names>, <function to read data>)
with the idea that the read function passes arrays into the list components.
Here's a simple toy example with three small matrices to illustrate
proof of concept:
t1 <- matrix(1:9, nrow = 3) t2 <- matrix(-4:4, nrow = 3) t3 <- matrix(-3:5, nrow = 3) (t1 + t2 + t3)/3
[,1] [,2] [,3] [1,] -2 1 4 [2,] -1 2 5 [3,] 0 3 6
Reduce('+', list(t1, t2, t3))/3
[,1] [,2] [,3] [1,] -2 1 4 [2,] -1 2 5 [3,] 0 3 6 HTH, Dennis
On Wed, Oct 5, 2011 at 6:00 AM, Martin Batholdy <batholdy at googlemail.com> wrote:
Hi, I have multiple three dimensional arrays. Like this: x1 <- array(rnorm(1000, 1, 2), dim=c(10, 10, 10)) x2 <- array(rnorm(1000, 1, 2), dim=c(10, 10, 10)) x3 <- array(rnorm(1000, 1, 2), dim=c(10, 10, 10)) Now I would like to compute the mean for each corresponding cell. As a result I want to get one 3D array (10 x 10 x 10) in which at position x, y, z is the mean of the corresponding values of x1, x2 and x3 (at position x, y, z). How can I do this?
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.