Построить матрицу с комбинациями пар между 2 группами в R - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть 2 набора очков: один содержит 8 стартовых очков, а другой - 8 финальных.Моя цель - построить матрицу из всех пар из двух пар (начало1, конец1) & (начало2, конец2).Первая группа с 8 начальными точками - (pt1, ... pt8), а конечная группа - (pt9, ... pt16).Я хочу построить матрицу со всеми парами пар точек между двумя группами следующим образом:

[pt1 pt9 pt2 pt10
 pt3 pt11 pt4 pt12
 pt5 pt13 pt6 pt14
 ...
#and then crossed pairs
 pt1 pt10 pt2 pt9
 etc... ]

Первый и третий столбцы, содержащие начальные точки 2 пар, а также второй и четвертый столбцы с соответствующими конечными точками.,Я пробовал с круговыми перестановками, но я не получаю все комбинации.

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать expand.grid для создания всех возможных пар, а затем снова использовать expand.grid для генерации всех перестановок пар следующим образом:

s <- 1:8
e <- 9:16
pairCombi <- expand.grid(s,e)
ix <- expand.grid(seq_len(nrow(pairCombi)), seq_len(nrow(pairCombi)))
ans <- as.data.frame(t(apply(ix[ix$Var1 != ix$Var2, ], 1L, function(n) {
    c(unlist(pairCombi[n[1L],]), unlist(pairCombi[n[2L],]))
})))
colnames(ans) <- paste0("Var", seq_len(ncol(ans)))
...