如何随机化向量


80

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

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

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

9
正确的答案将您引向sample。您可能希望在此处查看警告,以免仅使用样品会带来一些危险。
戴森2012年

@Dason:tl; dr只要保证向量长度大于1就可以了。
smci

1
@smci tl;博士认为这很危险,因为它会让人感到自在,然后当它最终达到1的长度时就会咬住您。
戴森

@Dason我已经读过,但是还没有人修改过base::sample以强制使用seq_along。另外我也看不到哪里sample/sample.int打来的电话 base::seq()
smci

Answers:


124

是。

sample(V)

来自?sample

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


我该如何洗牌[1,1,2,2,2,2,3,3,4,5,5,5],使我得到像这样的东西:[5,5,3,3,3,3,3, 1,1,2,4,4,4]?这样每个元素可以随机更改为另一个元素,但保持每个元素的数量不变?
Rotail

2
@Rotail:这已经可以满足您的要求;所述size的参数sample默认为size <- length(x)。(键入sample以查看执行此操作的代码。)
smci

对!谢谢!
Rotail

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.