[R] mean of 3D arrays

Dennis Murphy djmuser at gmail.com
Wed Oct 5 18:24:31 CEST 2011


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.
>



More information about the R-help mailing list