Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R mantelhaen.test()的外部函数中的NA/NaN/Inf错误_R - Fatal编程技术网

R mantelhaen.test()的外部函数中的NA/NaN/Inf错误

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 这个错误似乎是由我的第一

我有一个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

这个错误似乎是由我的第一个变量引起的,因为在测试的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)