# [R] list of matrices --> array

Tony Plate taplate at gmail.com
Sun Feb 17 15:41:24 CET 2013

```abind() (from package 'abind') can take a list of arrays as its first argument, so in general, no need for do.call() with abind().

As another poster pointed out, simplify2array() can also be used; while abind() gives more options regarding which dimension is created and how dimension names are constructed.

> x <- list(A=cbind(X=c(a=1,b=2,c=3,d=4),Y=5:8,Z=9:12), B=cbind(X=c(a=13,b=14,c=15,d=16),Y=17:20,Z=21:24))
\$A
X Y  Z
a 1 5  9
b 2 6 10
c 3 7 11
d 4 8 12

\$B
X  Y  Z
a 13 17 21
b 14 18 22
c 15 19 23
d 16 20 24

>
> dim(abind(x, along=3))
 4 3 2
> dim(abind(x, along=1.5))
 4 2 3
> dim(abind(x, along=0.5))
 2 4 3
> dim(abind(x, along=1, hier.names=T)) # construct rownames in a hierarchical manner A.a, A.b, etc
 8 3
> dim(abind(x, along=2, hier.names=T)) # construct colnames in a hierarchical manner
 4 6
> abind(x, along=2, hier.names=T)
A.X A.Y A.Z B.X B.Y B.Z
a   1   5   9  13  17  21
b   2   6  10  14  18  22
c   3   7  11  15  19  23
d   4   8  12  16  20  24
>

On 2/14/2013 3:53 AM, Rolf Turner wrote:
>
> require(abind)
> do.call(abind,c(my_list,list(along=0))) # Gives 2 x 4 x 5
> do.call(abind,c(my_list,list(along=3))) # Gives 4 x 5 x 2
>
> The latter seems more natural to me.
>
>     cheers,
>
>         Rolf Turner
>
> On 02/14/2013 07: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[] <- matrix(1:20, ncol = 5)
>> my_list[] <- 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 :-/
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help