On Aug 24, 2009, at 11:46 AM, Marc Schwartz wrote:


On Aug 24, 2009, at 11:16 AM, Daniel Nordlund wrote:

If I have two matrices like

x <- matrix(rep(c(1,2,3),3),3)
y <- matrix(rep(c(4,5,6),3),3)

How can I combine  them to get ?

1 1 1 4 4 4
1 1 1 5 5 5
1 1 1 6 6 6
2 2 2 4 4 4
2 2 2 5 5 5
2 2 2 6 6 6
3 3 3 4 4 4
3 3 3 5 5 5
3 3 3 6 6 6

The number of rows and the actual numbers above are unimportant, they are given so as to illustrate how I want to combine the matrices. I.e., I am looking for a general way to combine the first row of x with each row of y, then the second row of x with y, ....

Thanks,

Dan



nr.x <- nrow(x)
nr.y <- nrow(y)

> cbind(x[rep(1:nr.x, each = nr.x), ], y[rep(1:nr.y, nr.y), ])
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    4    4    4
[2,]    1    1    1    5    5    5
[3,]    1    1    1    6    6    6
[4,]    2    2    2    4    4    4
[5,]    2    2    2    5    5    5
[6,]    2    2    2    6    6    6
[7,]    3    3    3    4    4    4
[8,]    3    3    3    5    5    5
[9,]    3    3    3    6    6    6



Actually, correction...that will work in this case, but in the general case, I believe that it needs to be:

x <- matrix(rep(c(1,2,3),3),3)
y <- matrix(rep(c(4,5,6,7),3),4)

> x
     [,1] [,2] [,3]
[1,]    1    1    1
[2,]    2    2    2
[3,]    3    3    3

> y
     [,1] [,2] [,3]
[1,]    4    4    4
[2,]    5    5    5
[3,]    6    6    6
[4,]    7    7    7


nr.x <- nrow(x)
nr.y <- nrow(y)


> cbind(x[rep(1:nr.x, each = nr.y), ], y[rep(1:nr.y, nr.x), ])
      [,1] [,2] [,3] [,4] [,5] [,6]
 [1,]    1    1    1    4    4    4
 [2,]    1    1    1    5    5    5
 [3,]    1    1    1    6    6    6
 [4,]    1    1    1    7    7    7
 [5,]    2    2    2    4    4    4
 [6,]    2    2    2    5    5    5
 [7,]    2    2    2    6    6    6
 [8,]    2    2    2    7    7    7
 [9,]    3    3    3    4    4    4
[10,]    3    3    3    5    5    5
[11,]    3    3    3    6    6    6
[12,]    3    3    3    7    7    7


We need to replicate each row by the number of rows in the other matrix.

HTH,

Marc

______________________________________________
R-help@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.

Reply via email to