R mantelhaen.test()的外部函数中的NA/NaN/Inf错误
我有一个100k行的数据帧,我想在它上面计算Cochran–Mantel–Haenszel测试 我的变量是教育水平和以分位数计算的分数,我的分组变量是性别,代码行如下所示:R mantelhaen.test()的外部函数中的NA/NaN/Inf错误,r,R,我有一个100k行的数据帧,我想在它上面计算Cochran–Mantel–Haenszel测试 我的变量是教育水平和以分位数计算的分数,我的分组变量是性别,代码行如下所示: mantelhaen.test(db$education, db$score.grouped, db$sex) 此代码引发以下错误和警告: qr.default(a,tol=tol)中出错:外部函数调用中的NA/NaN/Inf(arg 1) 此外:警告消息:在ntot*行和中:整数溢出产生的NAs 这个错误似乎是由我的第一
mantelhaen.test(db$education, db$score.grouped, db$sex)
此代码引发以下错误和警告:
qr.default(a,tol=tol)中出错:外部函数调用中的NA/NaN/Inf(arg 1)此外:警告消息:在ntot*行和中:整数溢出产生的NAs 这个错误似乎是由我的第一个变量引起的,因为在测试的7个变量中,我只有2个变量出现了问题,这似乎没有明显的共同点 在抛出错误的变量和不抛出错误的变量之间,缺失值和因子级别似乎没有区别。我尝试了完整的案例(使用
na.omit
),但问题仍然存在
什么触发了这个错误?这是什么意思?我怎样才能摆脱它 有趣的帖子: 附录:以下是
str
(失败的原因是教育
和imc.cl
):
这给了我不多的信息,但也许它可以给你。我可以通过扩大数据集来复制这个问题
set.seed(101); n <- 500000
db <- data.frame(education=
factor(sample(1:3,replace=TRUE,size=n)),
score=
factor(sample(1:5,replace=TRUE,size=n)),
sex=
sample(c("M","F"),replace=TRUE,size=n))
应该有用。
在新函数起作用的情况下,一定要对照旧函数测试新函数,以确保得到相同的答案
现在发布到,我们将看到发生了什么
更新2018年5月11日:这是(3.6版)。两个整数的乘积太大,不能成为整数,例如,
10L*2147483646L
复制警告。这是数据属性的结果。如果没有一个可复制的例子,我们真的无法提供更多帮助。是的,我看到了一些关于这个警告的帖子,这就是我所理解的。但我如何才能给出一个10万行可复制的示例?@Roland你能看看我的编辑吗?你知道我如何给你一个可复制的例子吗?你能给我们展示一下str(db[c(“教育”,“分数.分组”,“性别”))?你能编写代码随机生成一个包含100K行的数据集,这些行具有导致相同错误的相似特征吗?@BenBolker I添加了str
输出。对不起,我很抱歉,我无法生成它们,我甚至不知道从哪里开始。请注意,我尝试了7个变量,只有教育和另一个变量抛出了这个错误。我测试了它,这在所有5个变量上给出了完全相同的结果。但是也许我应该使用my_mantelhaen.test()
作为tryCatch()
的错误函数。谢谢。这帮了大忙!
db2 = db %>% head(99787) #fails at 99788
db2 = db %>% tail(99698) #fails at 99699
mantelhaen.test(db2$education, db2$score.grouped, db2$sex)
set.seed(101); n <- 500000
db <- data.frame(education=
factor(sample(1:3,replace=TRUE,size=n)),
score=
factor(sample(1:5,replace=TRUE,size=n)),
sex=
sample(c("M","F"),replace=TRUE,size=n))
my_mantelhaen.test(db$education, db$score, db$sex)