在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时出错。
是否有人知道如何解决此问题?
答案 0 :(得分:1)
如果x
是单个值,则sample(x)
从值1到x
进行采样(请参阅帮助的Details
部分)或1到{{1}如果floor(x)
不是整数。因此x
参数必须是长度为prob
的向量。在您的代码x
中始终是长度为1的向量,这会导致错误。