【发布时间】:2018-05-19 15:22:27
【问题描述】:
在 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
我的想法是 sample() 的“大小”参数(即 n*p)在第二个函数调用(y 变量)中无法计算为 1,但我找不到任何记录此错误的内容在 sample() 的帮助文件中。
我知道在某些情况下上限()可能会出现奇怪的行为,但我不相信这可能是问题所在。
上述代码运行时,x设置为整数数据类型,如1L、2L等,导致y求值出错。
有人知道如何解决这个问题吗?
【问题讨论】: