【问题标题】:How to randomize a vector如何随机化一个向量
【发布时间】:2012-11-25 19:14:25
【问题描述】:

我想在一个简单的单行命令中随机重组向量中数字的顺序?

我的特定向量 V 对于从 1 到 10 的每个值都有 150 个条目:

V <- rep(1:10, each=150)

【问题讨论】:

  • 这里的答案正确地将您指向sample。您可能需要查看警告 here 以了解仅按原样使用示例所带来的一些危险。
  • @Dason:tl;dr 只要保证向量长度>1,它就可以工作。
  • @smci tl;Dr 说它很危险,因为人们习惯了它,然后当它最终长度为 1 时,它会咬你。
  • @Dason 我已经读过了,但还没有人修改base::sample 以强制使用seq_along。我也看不到sample/sample.int 在哪里打电话给base::seq()

标签: r vector random shuffle


【解决方案1】:

是的。

sample(V)

来自?sample

对于“样本”,“大小”的默认值是项目数 从第一个参数推断,因此“sample(x)”生成一个 “x”(或“1:x”)的元素的随机排列。

【讨论】:

  • 我怎样才能洗牌 [1,1, 2, 2, 2, 2, 3, 3, 4, 5, 5, 5] 以便我得到这样的东西: [5, 5, 3、3、3、3、1、1、2、4、4、4]?这样每个元素可以随机更改为另一个元素,但保持每个元素的数量不变?
  • @Rotail:这已经是你想要的了; samplesize 参数默认为 size &lt;- length(x)。 (键入 sample 以查看执行此操作的代码。)
  • 是的!谢谢!
【解决方案2】:

使用sample函数

V<-rep(1:10, each=150)

set.seed(001) # just to make it reproducible
sample(V)

【讨论】:

  • replace=FALSE 是默认值。
  • 这会从原来的 1500 得到 150 个值
猜你喜欢
  • 2019-05-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多