r - 在R中以随机顺序分组匹配数字

标签 r sorting random montecarlo

我正在处理蒙特卡洛模拟类型的问题,需要生成一个由重复随机数组成的向量,将匹配的数字组合在一起,但顺序是随机的。

举个例子更容易解释。如果我有: 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/

相关文章:

java - 字符串流未排序?

javascript - 变量排序表的排序不正确

ios - Objective-C 中的随机数

C - 将 2 for 循环重写为 1 for 循环以复制数组。

r - 从单个列创建多个列并清理结果

r - 如何删除r数据框中的多列?

mysql - 从一个表中选择包含另一个表中一长串单词中的任何单词的行

应用于数据框中列表的 R 函数

r - 加速随机森林的建议

python - Numpy 随机选择,仅沿一个轴替换