[R] duplicate rows in a matrix

Marc Schwartz marc_schwartz at comcast.net
Fri Nov 2 17:46:53 CET 2007


On Fri, 2007-11-02 at 09:04 -0700, Silvia Lipski wrote:
> Hi!
> 
> Is there a fast way to duplicate rows in a matrix?
> I would like to do the following:
> 
> change a matrix A like:
>      [,1] [,2] 
>  [1,] Kevin 1
>  [2,] Alf 2
> 
> into :
>      [,1] [,2] 
>  [1,] Kevin 1
>  [2,] Kevin 1
>  [3,] Alf 2
>  [4,] Alf 2
> 
> i.e. double all rows. The only way I could think off
> was: rbind(A[1,],A[1,],A[2,],A[2,]) - which is really
> impractible, of course.
> 
> Can anyone help, please?
> Thank you,
> Silvia

Typically, you would use something like:

> A
     [,1]    [,2]
[1,] "Kevin" "1" 
[2,] "Alf"   "2" 

> A[rep(seq(nrow(A)), each = 2), ]
     [,1]    [,2]
[1,] "Kevin" "1" 
[1,] "Kevin" "1" 
[2,] "Alf"   "2" 
[2,] "Alf"   "2" 


Use row indexing consisting of duplicate index values created by:

> rep(seq(nrow(A)), each = 2)
[1] 1 1 2 2

See ?rep and ?seq

HTH,

Marc Schwartz



More information about the R-help mailing list