感觉这是一个超级基本的问题,但是我有点卡住了。
假设我有一个100项的数据集:
x <- rnorm(100, 0, 1)
我想生成一个新对象,它由x组成,使用sample(x, size=100, replace=F)
进行10,000次洗牌。比如,我最后想要的不是把这些重复都洗牌在一起,而是让x中的每个项在出现两次之前出现一次,等等。
我觉得这应该是超级简单,但不知道该怎么做?我的第一个想法是rep()
,但这给了我相同的洗牌n次,我希望每次洗牌都是独立的。我试着
repeat{
sample(x, size=100, replace=F)
i <- i + 1
if (i == n){
break
}
}
,但这是非常慢的,即使是少量的重复。也想到了apply
家族,但似乎他们打算对列表中的每个项目重复命令,而不是对整个列表做一些事情几次?(如果错了请纠正我!)
我将非常感谢任何帮助!
对问题的回答:
reps <- as.vector(replicate(sample(x, replace = F, size = length(x)), n = 10000, simplify = F)
然后将其转换为更可用的格式,
reps <- as.numeric(unlist(reps))