我对这个包不熟悉,但我可以说你的数据是一个特殊情况,或者这个包(至少运行函数)需要重新审查。
pdf <- pdf/sum(pdf) # pdf contains Inf, so becomes NaN
mu <- 1 + 2 * n1 * n2/(n1 + n2)
if (r1 <= mu) # This is verified
pvalue <- sum(pdf[(1:l2) <= r1]) # pvalue is not calculated, pdf is all NaN
if (r1 > mu) # there should be some R versions without else...
pvalue <- sum(pdf[(1:l2) >= r1])
if (pvalue > 0.5) # This gives you the error! pvalue is all NaN
pvalue <- 1 - pvalue
pdf 上面的几行获取 Inf 值:
for (i in seq(4, l2, 2)) { # when i is 166 pdf gets its first Inf value
r <- (i - 2)/2
f[r + 1] <- (n1 - r) * (n2 - r)/r/r * f[r]
pdf[i] <- f[r + 1]
}
我不能再进一步了,因为我既不知道这些数据应该是什么样子,也不知道你应该从这样的函数中得到什么结果。试着自己看看这个函数,我受够了:-) 上面代码中缺少的 else 并不是唯一奇怪的地方。希望有帮助