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

时间:2017-05-23 12:05:35

标签: r

我正在运行一堆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()是错误的方法吗?

2 个答案:

答案 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)