R中数字的排列位置

时间:2016-04-08 15:12:32

标签: r

我在R中寻找可以进行排列的函数。例如,我有一个五个1和十个0的向量,如下所示:

> status=c(rep(1,5),rep(0,10))
> status
 [1] 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0

现在我想随机置换这些数字的位置,但在向量中保持0和1的相同数字并获得新的数字系列,例如得到这样的结果:

1 1 0 1 0 1 0 0 0 0 0 1 0 0 0

1 0 0 0 0 0 0 1 1 0 0 1 0 1 0

我发现函数sample()可以帮助我们进行采样,但每次1和0的数量并不相同。你知道怎么用R做这个吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

我们可以使用sample

sample(status)
#[1] 1 0 0 1 0 0 1 0 0 0 0 1 0 1 0
sample(status)
#[1] 0 0 0 0 1 1 0 0 1 1 0 0 0 1 0

如果我们使用sample返回整个vector,它将执行排列并为每个唯一元素提供相同的频率计数

colSums(replicate(5, sample(status)))
#[1] 5 5 5 5 5

即。我们在每个采样中得到5个。所以,剩下的0将是10。