我正在运行一堆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()是错误的方法吗?
答案 0 :(得分:2)
tryCatch将是正确的方法。我同意你的观点,一些例子不是很清楚,并且在过去我自己也遇到过tryCatch的问题。我总是发现以下SO回答有用的参考:How to write trycatch in R
答案 1 :(得分:2)
是的,tryCatch
是正确使用的功能:
x <- 0
tryCatch(
mylogit <- glm(binary~Sepal.Length+dummy,data = DT, family=binomial(link='logit')),
warning = function(w) { x <<- x + 1 }
)
<<-
是必要的,因为您要分配一个超出函数范围的变量。 (通常这是一个坏主意,但在这里是必要的。)
如果您想对警告文字执行某些操作,请使用conditionMessage(w)
。