Как заполнить все комбинации из матрицы в два столбца - PullRequest
0 голосов
/ 01 февраля 2019

Я делаю это:

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 голосов
/ 01 февраля 2019

Поскольку первый столбец всегда повторяется, вы можете использовать переработку следующим образом:

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
...