如果(delta〈tol)中断时出错:需要TRUE/FALSE时缺少值

n1bvdmb6  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(150)
library("mvmeta")
library("dosresmeta")
lin <- dosresmeta(formula = logHR ~ dose, id = study, 
                  type = type, se = se, cases = cases, 
                  n = personyear, data = breast)

如果(delta〈tol)中断时出错:需要TRUE/FALSE时缺少值否则:警告信息:对数(Ax [v!= 0]):生成NaN

bihw5rsg

bihw5rsg1#

    • 回答我**

breast$cases中至少有一个值是负数。您可以使用以下命令进行检查:

table(breast$cases < 0, useNA = "always")
    • 理由**

dosresmeta函数将调用covar.logrr函数,covar.logrr函数将调用grl函数(在得到错误后尝试运行traceback())。grl中的基本代码为:

cases <- eval(mf.cases, data, enclos = sys.frame(sys.parent()))
Ax <- Axp <- cases
y[v!=0] + log(A0) + log(n[v!=0]) - log(Ax[v!=0]) - log(n[v==0])

实际上,该函数获取cases列,将其赋给Ax,然后尝试运行log(Ax[v!=0])(请参见您的错误)。
我们知道,取负数的对数将得到NaN,如您的错误所述:

log(-1)
# [1] NaN
# Warning message:
# In log(-1) : NaNs produced

因此,我认为您的cases列包含非正数。

相关问题