2016-04-08 36 views
1

我正在寻找R中可以进行排列的函数。例如,我有五个1十0这样的载体:R中的数字排列位置

> 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 

我发现功能样本()可以帮助我们来样,但1和0的数量不每个蒂姆都一样即你知道我怎么用R做这个?提前致谢。

回答

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.