[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