m2<-matrix(t(cbind(mymatrix,mymatrix)),ncol=dim(mymatrix)[2],byrow=T)

seems a bit faster than mymatrix[rep(1:nrow(mymatrix), rep(2,

nrow(mymatrix))),]

(not that it matters here at all), and

m2<-mymatrix[ceiling(1:(2*nrow(mymatrix))/2),]

much faster still. It seems rep( , rep()) is relatively expensive for this

job (though the difference is tiny in any sensible terms). I'm now even more

impressed at how cleverly R passes parameters.

Mike.

mymatrix <- matrix(1:9, ncol=3)

date()

[1] "Thu Mar 21 17:03:29 2002"

for (i in 1:50000) {

+ m2<-mymatrix[rep(1:nrow(mymatrix), rep(2, nrow(mymatrix))),]

+ }

m2

[,1] [,2] [,3]

[1,] 1 4 7

[2,] 1 4 7

[3,] 2 5 8

[4,] 2 5 8

[5,] 3 6 9

[6,] 3 6 9

date()

[1] "Thu Mar 21 17:03:46 2002"

nr <- nrow(mymatrix)

for (i in 1:50000) {

+ m2<-mymatrix[rep(1:nr, rep(2, nr)),]

+ }

m2

[,1] [,2] [,3]

[1,] 1 4 7

[2,] 1 4 7

[3,] 2 5 8

[4,] 2 5 8

[5,] 3 6 9

[6,] 3 6 9

date()

[1] "Thu Mar 21 17:04:01 2002"

for (i in 1:50000)

+ m2<-matrix(t(cbind(mymatrix,mymatrix)),ncol=dim(mymatrix)[2],byrow=T)

m2

[,1] [,2] [,3]

[1,] 1 4 7

[2,] 1 4 7

[3,] 2 5 8

[4,] 2 5 8

[5,] 3 6 9

[6,] 3 6 9

date()

[1] "Thu Mar 21 17:04:14 2002"

for (i in 1:50000) {

+ myindex <- ceiling(1:(2*nrow(mymatrix))/2)

+ m2<-mymatrix[myindex,]

+ }

m2

[,1] [,2] [,3]

[1,] 1 4 7

[2,] 1 4 7

[3,] 2 5 8

[4,] 2 5 8

[5,] 3 6 9

[6,] 3 6 9

date()

[1] "Thu Mar 21 17:04:19 2002"

-----Original Message-----

From: owner-r-help at stat.math.ethz.ch

[mailto:owner-r-help at stat.math.ethz.ch]On Behalf Of Achim Zeileis

Sent: 21 March 2002 10:45

To: Juhana Vartiainen

Cc: r-help at stat.math.ethz.ch

Subject: Re: [R] repeating rows or columns within a matrix

>

>

Juhana Vartiainen wrote:

> >

> >

Spse I have a matrix, say

> >

> >

and I would like to expand it by repeating rows within the

matrix, to

get, if the repeating factor is 2, say:

> >

> >

(or columnwise as well) . There must be a smart way of doing that?

>

You could do something like that: >

R> mymatrix <- matrix(1:9, ncol=3)

R> myindex <- rep(1:nrow(mymatrix), rep(2, nrow(mymatrix)))

R> mymatrix[myindex,]

[,1] [,2] [,3]

[1,] 1 4 7

[2,] 1 4 7

[3,] 2 5 8

[4,] 2 5 8

[5,] 3 6 9

[6,] 3 6 9 >

Best,

Z

>

> >

Juhana Vartiainen

juhana.vartiainen at labour.fi

> >

> >

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

.-.-.-.-.-.-.-.-.-

r-help mailing list -- Read

http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.htmlSend "info", "help", or "[un]subscribe"

(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch

_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.

_._

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

-.-

r-help mailing list -- Read

http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.htmlSend "info", "help", or "[un]subscribe"

(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch

_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.

_._

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

r-help mailing list -- Read

http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.htmlSend "info", "help", or "[un]subscribe"

(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch

_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._