R-为两个向量的元素创建随机组合

时间:2019-01-21 11:19:44

标签: r vector random combinations

a <- rnorm(10)

b <- sample(a,18,replace = T)

对于a的每个元素,我想从向量b中随机分配一个值。这样我就可以对向量“ a”的所有元素进行组合。会是这样的:

combinations <- data.table(first=a ,second=sample(b,length(a)))

我真正想要的与data.table combinations有点不同。我想获得一组组合,其中没有任何行具有重复的值。

编辑:在上面的代码中,组合$ first [i]和组合$ second [i]可能相等。我想要的是使不可能有组合$ first [i]和组合$ second [i]相等的情况。

注意:我将对大型矢量执行此操作,因此它需要快速运行。

1 个答案:

答案 0 :(得分:0)

您可以按组如下进行采样

library(data.table)
set.seed(0L)
a <- LETTERS[1L:10L]
output <- data.table(first=a)[, .(second=sample(setdiff(a, first), .N)), by=.(first)]

如果需要随机行排序,则可以运行output[sample(.N)]

输出:

    first second
 1:     A      J
 2:     B      D
 3:     C      E
 4:     D      G
 5:     E      J
 6:     F      B
 7:     G      J
 8:     H      J
 9:     I      F
10:     J      F