【发布时间】:2020-05-26 03:10:04
【问题描述】:
我想取消在 coxph 分析中经常出现的警告。已知警告“Loglik 在变量 1 之前收敛;系数可能是无限的”过于敏感,我还有其他方法可以检查结果。我的第一次尝试是将 coxph 包装在调用处理程序中:
coxMW <- function(...){
withCallingHandlers(coxph(...),
warning=function(w) {
if (grepl("coefficient may be infinite", w$message))
invokeRestart("muffleWarning")
})
}
这给出了预期的答案
library(survival)
coxObj1 <- coxph(Surv(futime, fustat) ~ rx, data=ovarian)
coxObj2 <- coxMW(Surv(futime, fustat) ~ rx, data=ovarian)
summary(coxObj1)
summary(coxObj2))
但是,当我尝试在 cox.zph 中使用结果时:
zph1 <- cox.zph(coxObj1)
zph2 <- cox.zph(coxObj2)
第二种情况,使用新函数,会导致:“is.data.frame(data) 中的错误:..2 在不正确的上下文中使用,没有 ... 可以查看”
我现在正在努力寻找一种方法来抑制这个特定的警告。我在一个大函数中多次使用 coxph,并且不想将每个对 coxph 的调用都包含在 withCallingHandlers 中。使用带有错误处理程序的 tryCatch 调用整个函数,以记录错误等并继续下一个案例,这工作正常。但是,如果我向 tryCatch 添加警告处理程序,仅抑制此警告,则会退出函数,并且我无法确定如何从函数内发生警告的位置继续。我在警告处理程序中尝试了各种重启命令组合,但我真的不知道我在做什么,想知道是否有更好的方法?欢迎提出任何建议!
【问题讨论】:
标签: r error-handling suppress-warnings cox-regression