我在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做这个吗?提前谢谢。
答案 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。