将矩阵的每一行与另一矩阵R的每个元素连接起来

时间:2017-04-14 14:53:16

标签: r matrix concatenation

我想将矩阵的每一行(比如m1)与另一个矩阵(m2)的每个元素连接起来。以下是一个例子:

m1 <- t(combn(4,2))
m2 <- matrix(NA,nrow(m1),2)
for(i in 1:nrow(m1)){
    m2[i,] <- seq(1,4,1)[-c(m1[i,])] 
   }
> m1
     [,1] [,2]
[1,]    1    2
[2,]    1    3
[3,]    1    4
[4,]    2    3
[5,]    2    4
[6,]    3    4

> m2
     [,1] [,2]
[1,]    3    4
[2,]    2    4
[3,]    2    3
[4,]    1    4
[5,]    1    3
[6,]    1    2

我想要的矩阵应该是这样的:

> m3
      [,1] [,2] [,3]
 [1,]    1    2    3
 [2,]    1    2    4
 [3,]    1    3    2
 [4,]    1    3    4
 [5,]    1    4    2
 [6,]    1    4    3
 [7,]    2    3    1
 [8,]    2    3    4
 [9,]    2    4    1
[10,]    2    4    3
[11,]    3    4    1
[12,]    3    4    2

在这种情况下,最佳做法是什么?

1 个答案:

答案 0 :(得分:3)

根据预期的输出,逻辑似乎是我们通过包括第二个数据集来扩展第一个数据集的行,因此行数应该是第一个数据集的两倍。在当前的方法中,我们使用rep展开行,然后cbind使用从vector

创建的matrix
cbind(m1[rep(1:nrow(m1), each = 2),], c(t(m2)))
#       [,1] [,2] [,3]
# [1,]    1    2    3
# [2,]    1    2    4
# [3,]    1    3    2
# [4,]    1    3    4
# [5,]    1    4    2
# [6,]    1    4    3
# [7,]    2    3    1
# [8,]    2    3    4
# [9,]    2    4    1
#[10,]    2    4    3
#[11,]    3    4    1
#[12,]    3    4    2