R 编程:sample() 函数 return 重复实体甚至 replace=TRUE

R Programming: sample() function return repeated entities even replace=TRUE

我正在使用 sample() 函数从骰子对象中获取随机样本。

> die
[1] 1 2 3 4 5 6
> sample(x=die , size=1 , replace=TRUE)
[1] 1
> sample(x=die , size=1 , replace=TRUE)
[1] 1
> sample(x=die , size=1 , replace=TRUE)
[1] 5
> sample(x=die , size=1 , replace=TRUE)
[1] 5
> sample(x=die , size=1 , replace=TRUE)
[1] 1
> sample(x=die , size=1 , replace=TRUE)
[1] 2
> sample(x=die , size=1 , replace=TRUE)
[1] 4

如果你观察到上面的输出1重复了3次,5重复了2次。但是从上面的输出甚至替换 TRUE 我可以看到频繁的多次重复。

参考:我正在阅读一本名为 Hands-On Programming with R 的书。

如果需要更多信息,请告诉我。

谢谢。

如果你用真正的骰子掷骰子,你也会看到重复的。每次骰子的每一面都有相同的机会出现,无论是否重复。

replace= 参数根本没有作用,当 size=1 时,因为在你抽到骰子的一侧之后,无论你是否替换它都没有区别。 replace=FALSE 将防止 sample() 的一次调用中出现重复。不影响sample.

的下一次调用

这不是统计问题,而是编程问题,更适合 Stack Overflow。

如果您的目标是避免两次获得相同的号码,那么您使用的 sample() 不正确。为避免重复,您需要使用单个命令(size 多于 1 个而不是多个命令)并使用 replace=FALSE(而不是 TRUE)来创建示例。例如:

> sample(x=die , size=4 , replace=FALSE)
[1] 1 6 4 3

当然,这不再对应于多次公平掷骰子,因为真正的骰子可以在后续掷骰子中给出相同的数字。

有关如何使用 sample() 的完整信息,请参阅帮助页面 ?sample

Sample() 不会影响同一向量上 sample() 的后续运行。您需要的是一种功能,可以逐步从您正在分析的矢量中删除您的图片。这里我写了一个类似的东西,叫rsample(),其中returns取出的对象和新的vector,剥夺了选中的对象。

rsample<-function(x){
    taken<-sample(x,size=1)
    newx<-x[-which(x==taken)[1]]
    return(list(taken=taken,new=newx))
}
die<-1:6
obj<-rsample(die)
obj$taken
[1] 3
obj<-rsample(obj$new)
obj$taken
[1] 5
obj<-rsample(obj$new)
obj$taken
[1] 2
obj<-rsample(obj$new)
obj$taken
[1] 4
obj<-rsample(obj$new)
obj$taken
[1] 1