如何将所有组合从矩阵填充到两列

时间:2019-02-01 12:09:52

标签: r matrix combinations rbind cbind

我正在这样做:

data.2<-
rbind(
cbind(data[,1], data[,2]),
cbind(data[,1], data[,3]),
cbind(data[,1], data[,4]),
cbind(data[,1], data[,5]),
cbind(data[,1], data[,6]),
cbind(data[,1], data[,7]),
cbind(data[,1], data[,8]),
cbind(data[,1], data[,9]),
cbind(data[,1], data[,10]),
cbind(data[,1], data[,11]))

如果我有更多的列并且不想手动绑定每个组合怎么办?

数据例如

      [,1] [,2] [,3] [,4]
 [1,]    1    4    2     5
 [2,]    2    5    6     7
 [3,]    3    6    8     9
and should look like
     [,1] [,2]
 [1,]    1    4
 [2,]    2    5
 [3,]    3    6
 [4,]    1    2
 [5,]    2    6
 [6,]    3    8
 [7,]    1    5
 [8,]    2    7
 [9,]    3    9

我有成排的列和行,而且我不知道要多少!

1 个答案:

答案 0 :(得分:0)

由于第一列始终在重复,因此您可以像这样使用回收:

data <- matrix(1:33, 3, 11)

data.2 <- cbind(data[, 1], as.numeric(data[, -1]))

结果

> data.2
      [,1] [,2]
 [1,]    1    4
 [2,]    2    5
 [3,]    3    6
 [4,]    1    7
 [5,]    2    8
 [6,]    3    9
 [7,]    1   10
 [8,]    2   11
 [9,]    3   12
[10,]    1   13
[11,]    2   14
[12,]    3   15
[13,]    1   16
[14,]    2   17
[15,]    3   18
[16,]    1   19
[17,]    2   20
[18,]    3   21
[19,]    1   22
[20,]    2   23
[21,]    3   24
[22,]    1   25
[23,]    2   26
[24,]    3   27
[25,]    1   28
[26,]    2   29
[27,]    3   30
[28,]    1   31
[29,]    2   32
[30,]    3   33