我正在处理蒙特卡洛模拟类型的问题,需要生成一个由重复随机数组成的向量,将匹配的数字组合在一起,但顺序是随机的。
举个例子更容易解释。如果我有: 1, 3, 7, 12, 1, 3, 7, 12, 1, 3, 7, 12
我希望它排序为: 7, 7, 7, 3, 3, 3, 12, 12, 12, 1, 1, 1(或以除升序/降序以外的任何顺序匹配的数字组)。
我需要随机顺序的原因是因为我的 MC 模拟是针对 2 个变量的,所以如果两者都是有序的,它们就不会独立变化。
我已经做到了:
sort(rep(runif(50,1,10),10), decreasing = FALSE)
它生成 1 到 10 之间的 50 个随机数,每组重复 10 次,然后按升序对 50 组 10 个匹配的随机数进行排序(或者如果我将“FALSE”更改为“TRUE”,它可以很容易地按降序排序) .我只是想不出以随机顺序获得 50 组 10 个匹配号码的最后一步。谁能帮忙?
最佳答案
这是一个带有split
的选项
unlist(sample(split(v1, v1)), use.names = FALSE)
#[1] 3 3 3 1 1 1 12 12 12 7 7 7
或者另一种选择是 match
with unique
v1[order(match(v1, sample(unique(v1))))]
数据
v1 <- c(1, 3, 7, 12, 1, 3, 7, 12, 1, 3, 7, 12)
关于r - 在R中以随机顺序分组匹配数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49313949/