【问题标题】:Creating shuffled numbers in R在 R 中创建随机数字
【发布时间】:2019-01-08 21:24:58
【问题描述】:

看到THIS EXAMPLE,我想知道如何在R 中创建一组 15 个从1 到4 的随机排序?

THIS Website,您可以获得 1 Set of 15 shuffled Numbers 范围:从 1 到 4

例如,在我的跑步中,我得到了:

设置#1: 3、2、2、1、1、1、3、2、2、3、2、1、3、4、1

有没有办法可以在R 中复制上述内容?

【问题讨论】:

  • 我不明白你想要的结果到底是什么。您是否只想让数字 1-4 以随机顺序出现 10 次? sample(rep(1:4, 10)) 怎么样?还是您只是想将replicate 的结果转换为一个简单的向量:as.vector(replicate(40, sample(1:4)))
  • @MrFlick,应该这样做谢谢!
  • @MrFlick, sample(rep(1:4, 10)) 是我要找的,但是如果我们有 15 而不是 40 呢?
  • 这不是 4 的倍数,所以我不确定如果你只选择 15 个值,你怎么能随机排序 1-4。这将取决于您要建模的具体过程。
  • 我不会去猜测那个程序可能在做什么。这对我来说并不明显。如果您在这个问题中准确描述您想要发生的事情,那将是最好的。

标签: r random sample sampling


【解决方案1】:

如果我正确理解了您的问题,首先会想到一个类似以下的解决方案:非常基本,但它可以发挥作用。

size <- 40
vec <- sample(1:4, size = size, replace = TRUE)
while(length(unique(vec)) < 4){
    vec <- sample(1:4, size = size, replace = TRUE)
}
vec 

while 循环不会持续很长时间,因为如果您采样 40 次,随机向量 vec 中不太可能没有出现数字。

当然你可以改变你的向量的size,代码仍然可以工作,除了你想让vec

【讨论】:

  • 是的,我尝试过在 while 循环中使用较小的矢量大小和“打印”功能。当 'vec' 包含 1 到 4 之间的所有数字中的至少一个时,循环停止。例如,我设置 size=6,while 循环进行了 3 次迭代以吐出一个您想要的向量。
猜你喜欢
  • 2020-12-05
  • 2016-01-04
  • 2014-02-27
  • 1970-01-01
  • 2013-05-22
  • 2016-10-07
  • 2022-09-27
  • 2021-10-16
  • 2011-10-20
相关资源
最近更新 更多