[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