Скажем, у меня есть вектор четной длины, такой как:
v <- c(1,1,1,1,2,2,2,3,3,3,4,5,6,7)
Это 14 элементов в длину. Я хочу случайным образом выбрать 7 пар элементов без замены, но правило состоит в том, что ни одна пара не должна содержать две одинаковые вещи.
Таким образом, следующий результат будет приемлемым:
1-2, 1-2, 1-2, 1-3, 3-4, 3-5, 6-7
Я не уверен, как это делать систематически. Очевидно, грубая сила будет работать, например,
set.seed(1)
v=c(1,1,1,1,2,2,2,3,3,3,4,5,6,7)
length(v)
v1<-sample(v)
pairs <- split(v1, ceiling(seq_along(v1)/2))
sapply(pairs, diff)
1 2 3 4 5 6 7
1 1 2 3 -6 -3 3
Это показывает, что ни у одной пары нет повторяющихся элементов, поскольку разница всегда не равна 0. В моем случае мне нужно делать это тысячи раз, и избежать дубликатов не так просто. Есть ли более эффективный способ?