Efficiently compute the row sums of a 3d array in R
Posted
by
Gavin Simpson
on Stack Overflow
See other posts from Stack Overflow
or by Gavin Simpson
Published on 2011-02-27T19:36:33Z
Indexed on
2011/02/27
23:24 UTC
Read the original article
Hit count: 257
Consider the array a
:
> a <- array(c(1:9, 1:9), c(3,3,2))
> a
, , 1
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
, , 2
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
How do we efficiently compute the row sums of the matrices indexed by the third dimension, such that the result is:
[,1] [,2]
[1,] 12 12
[2,] 15 15
[3,] 18 18
??
The column sums are easy via the 'dims'
argument of colSums()
:
> colSums(a, dims = 1)
but I cannot find a way to use rowSums()
on the array to achieve the desired result, as it has a different interpretation of 'dims'
to that of colSums()
.
It is simple to compute the desired row sums using:
> apply(a, 3, rowSums)
[,1] [,2]
[1,] 12 12
[2,] 15 15
[3,] 18 18
but that is just hiding the loop. Are there other efficient, truly vectorised, ways of computing the required row sums?
© Stack Overflow or respective owner