[R] replicate matrix

William Dunlap wdunlap at tibco.com
Mon Feb 22 17:43:11 CET 2010


> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of wendy
> Sent: Saturday, February 20, 2010 6:58 PM
> To: r-help at r-project.org
> Subject: [R] replicate matrix
> 
> 
> Hi all,
> 
> I have a matrix, for example
>      [,1] [,2]
> [1,]  1    3
> [2,]  4    6
> 
> I want to replicate the matrix twice and add an extra column 
> at the end,
> which is
>      [,1] [,2] [,3] [,4] [,5] [,6] [,7]
> [1,]  1    3     1    3     1    3    2
> [2,]  4    6     4    6     4    6    5
> 
> I found 'rep' only works for vector. Does anyone know how to 
> replicate a
> matrix, and append the matrix?

You want to replicate the columns of the matrix
so use rep() in a column subscripting expression:
    x <- matrix(c(1,4,3,6),nrow=2,ncol=2) # setup
    xRepped <- x[ , rep(seq_len(ncol(x)), 3)]
then append the new column with
    xReppedAppended <- cbind(xRepped, c(2,5)) 

I avoid the solutions that convert the original
matrix to a vector and back to a matrix, like
    xxx <- matrix(rep(as.vector(x),3), nrow=2)
as they make me assume more than I want to assume
about how matrices are represented internally.
Those solutions also lose any column or row names
that my matrix may have had.

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 
> 
> Thank you in advance,
> Wendy  
> 
> 
> -- 
> View this message in context: 
> http://n4.nabble.com/replicate-matrix-tp1563337p1563337.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 



More information about the R-help mailing list