# [R] How to join matrices of different row length from a list

David Winsemius dwinsemius at comcast.net
Thu Jan 6 16:32:23 CET 2011

```On Jan 6, 2011, at 6:23 AM, Dimitris Rizopoulos wrote:

> try this:
>
> matLis <- list(matrix(1:4, 2, 2), matrix(1:6, 3, 2),
>    matrix(2:1, 1, 2))
>
> n <- max(sapply(matLis, nrow))
> do.call(cbind, lapply(matLis, function (x)
>    rbind(x, matrix(, n-nrow(x), ncol(x)))))

It's good that you solved the OP's question so neatly, since the
alternate solution I was going to propose turns out to be for a
different problem. Had the problem been for binding by row and padding
rbind.fill.matrix(). No cbind.fill or cbind.fill.matrix, yet. It looks
as though switching the roles of column and row in either of your
respective solutions could create a general solution though.

--
David.
>
>
> I hope it helps.
>
> Best,
> Dimitris
>
>
> On 1/6/2011 11:56 AM, emj83 wrote:
>>
>> Hi,
>>
>> I have several matrix in a list, for example:
>> e
>> [[1]]
>>      [,1] [,2]
>> [1,]    1    3
>> [2,]    2    4
>>
>> [[2]]
>>      [,1] [,2]
>> [1,]    1    4
>> [2,]    2    5
>> [3,]    3    6
>>
>> [[3]]
>>      [,1] [,2]
>> [1,]    2    1
>>
>> I would like to join them by column i.e.
>>      [,1] [,2]   [,3] [,4][,5] [,6]
>> [1,]    1    3   1    4    2    1
>> [2,]    2    4   2    5   NA  NA
>> [3,]   NA  NA  3    6   NA   NA
>>
>> I have tried  do.call(cbind,e) but I get this error message as the
>> rows are
>> of different length-
>> Error in function (..., deparse.level = 1)  :
>>   number of rows of matrices must match (see arg 2)
>>
>>
>> Thanks Emma
>>
>>
>
> --
> Dimitris Rizopoulos
> Assistant Professor
> Department of Biostatistics
> Erasmus University Medical Center
>
> Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
> Tel: +31/(0)10/7043478
> Fax: +31/(0)10/7043014
> Web: http://www.erasmusmc.nl/biostatistiek/
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help