[R] cbind a list of matrices

Peter Dalgaard p.dalgaard at biostat.ku.dk
Sat Jul 16 12:20:35 CEST 2005


(Ted Harding) <Ted.Harding at nessie.mcc.ac.uk> writes:

> On 16-Jul-05 Mauro Gasparini wrote:
> > 
> > Dear users,
> > 
> > I have a list of several matrices with the same number of columns,
> > how do I rbind them all with a vectorized command?
> > 
> > A related simpler question is, how do I vectorize the instruction
> > that rbinds together several copies of the same matrix?
> 
> Didn't you simply try:
> 
> > A<-matrix(c(1.1,1.2,1.3,1.4,1.5,1.6),ncol=3)
> > B<-matrix(c(2.1,2.2,2.3,2.4,2.5,2.6),ncol=3)
> > C<-matrix(c(3.1,3.2,3.3,3.4,3.5,3.6),ncol=3)
> > A
>      [,1] [,2] [,3]
> [1,]  1.1  1.3  1.5
> [2,]  1.2  1.4  1.6
> > B
>      [,1] [,2] [,3]
> [1,]  2.1  2.3  2.5
> [2,]  2.2  2.4  2.6
> > C
>      [,1] [,2] [,3]
> [1,]  3.1  3.3  3.5
> [2,]  3.2  3.4  3.6
> > rbind(A,B,C)
>      [,1] [,2] [,3]
> [1,]  1.1  1.3  1.5
> [2,]  1.2  1.4  1.6
> [3,]  2.1  2.3  2.5
> [4,]  2.2  2.4  2.6
> [5,]  3.1  3.3  3.5
> [6,]  3.2  3.4  3.6
> > rbind(A,A,A)
>      [,1] [,2] [,3]
> [1,]  1.1  1.3  1.5
> [2,]  1.2  1.4  1.6
> [3,]  1.1  1.3  1.5
> [4,]  1.2  1.4  1.6
> [5,]  1.1  1.3  1.5
> [6,]  1.2  1.4  1.6
> 
> If there's an exception under which the above does not work,
> I'd be interested to hear of it!

If the matrices literally are in a list, you might need

do.call("rbind", l)

which for multiple copies (5, say) of the same matrix might be done via

M <- matrix(1:4,2)
MM <- do.call("rbind",replicate(5, M, simplify=FALSE))

although it might be more efficient with

MM <- matrix(t(M),5*2,2,byrow=T) 

-- 
   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907




More information about the R-help mailing list