使用sample()进行随机抽样会产生意外结果

时间:2018-05-19 02:11:05

标签: r sample

在R中执行随机抽样时请考虑以下事项:

n <- 10
k <- 10 
p <- 0.10 # proportion of the k objects to subsample
probs <- c(0.30, 0.30, 0.30, rep(0.10/7, 7)) # probabilities for each of the k objects

这里,n和k的作用是无关紧要的;然而,存在n> = k。

的条件
x <- sort(sample(k, size = ceiling(p * k), replace = FALSE)) # works
y <- sample(x, size = n, replace = TRUE, prob = probs[x]) # throws error

我想知道为什么分配给y的函数调用会引发错误。

我收到的错误是:

Error in sample.int(x, size, replace, prob) : 
incorrect number of probabilities

我的想法是&#39;尺寸&#39; sample()的参数(即n * p)在第二个函数调用(y变量)中不能求值为1,但我还没有能够在帮助文件中找到记录此错误的任何内容到sample()。

我知道天花板()在某些情况下可能会有奇怪的行为,但我不相信这可能是个问题。

当运行上述代码时,x被设置为整数数据类型,例如1L,2L等,这导致评估y时出错。

是否有人知道如何解决此问题?

1 个答案:

答案 0 :(得分:1)

如果x是单个值,则sample(x)从值1到x进行采样(请参阅帮助的Details部分)或1到{{1}如果floor(x)不是整数。因此x参数必须是长度为prob的向量。在您的代码x中始终是长度为1的向量,这会导致错误。