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]相等的情况。
注意:我将对大型矢量执行此操作,因此它需要快速运行。
答案 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