[R] list of matrices --> array
David Winsemius
dwinsemius at comcast.net
Thu Feb 14 12:09:29 CET 2013
On Feb 13, 2013, at 10:03 PM, Murat Tasan wrote:
> i'm somehow embarrassed to even ask this, but is there any built-in
> method for doing this:
>
> my_list <- list()
> my_list[[1]] <- matrix(1:20, ncol = 5)
> my_list[[2]] <- matrix(20:1, ncol = 5)
>
> now, knowing that these matrices are identical in dimension, i'd like
> to unfold the list to a 2x4x5 (or some other permutation of the dim
> sizes) array.
> i know i can initialize the array, then loop through my_list to fill
> the array, but somehow this seems inelegant.
> i also know i can vectorize the matrices and unlist the list, then
> build the array from that single vector, but this also seems inelegant
> (and an easy place to introduce errors/bugs).
>
> i can't seem to find any built-in that handles this already... but
> maybe i just haven't looked hard enough :-/
I think the built-in function you seek is `simplify2array`:
# gives 4 x 5 x 2
> simplify2array(my_list)
, , 1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
, , 2
[,1] [,2] [,3] [,4] [,5]
[1,] 20 16 12 8 4
[2,] 19 15 11 7 3
[3,] 18 14 10 6 2
[4,] 17 13 9 5 1
> # 2 x 4 x 5
aperm( simplify2array(my_list), c(3,1,2) )
# 4 x 2 x 5
> aperm( simplify2array(my_list), c(1,3,2) )
--
David Winsemius, MD
Alameda, CA, USA
More information about the R-help
mailing list