R 在警告后执行某些操作(例如 tryCatch 警告,然后编辑对象)



我正在运行一堆logit模型,其中一些具有完美的分离,返回glm警告。下面是一个显示问题的数据集:

DT <- iris
str(DT)
DT$binary <- as.numeric(DT$Petal.Width>1)
DT$dummy <- as.numeric(as.numeric(DT$Species)>2)
mylogit <- glm(binary~Sepal.Length+dummy,data = DT, family=binomial(link='logit'))

我正在应用函数中从 mylogit 收集估计值、模型拟合等,并希望添加一个虚拟人,显示是否返回了此警告。但是,我对tryCatch()语法的理解不够,我找到的示例主要旨在返回警告等。我正在寻找类似的东西:

if(warning is returned){x <- 1}

tryCatch(( 是错误的方法吗?

是的,tryCatch是正确的函数:

x <- 0
tryCatch(
    mylogit <- glm(binary~Sepal.Length+dummy,data = DT, family=binomial(link='logit')),
    warning = function(w) { x <<- x + 1 }
)

<<-是必需的,因为您要分配给函数范围之外的变量。(通常这是一个坏主意,但这里是必要的。

如果要对警告文本执行某些操作,请使用 conditionMessage(w)

tryCatch是正确的方法。我同意你的看法,有些例子不太清楚,而且我自己过去也遇到了一些 tryCatch 麻烦。我总是发现以下 SO 答案是一个有用的参考:如何在 R 中编写 trycatch

最新更新