Skip to content
Prev 317742 / 398503 Next

list of matrices --> array

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))
[1] 4 3 2
 > dim(abind(x, along=1.5))
[1] 4 2 3
 > dim(abind(x, along=0.5))
[1] 2 4 3
 > dim(abind(x, along=1, hier.names=T)) # construct rownames in a hierarchical manner A.a, A.b, etc
[1] 8 3
 > dim(abind(x, along=2, hier.names=T)) # construct colnames in a hierarchical manner
[1] 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: