我设置选项(警告= 2).我需要在触发时意识到警告并且更愿意停止执行.也就是说,在少数情况下会发出警告,程序应该继续执行.使用tryCatch()可以正确捕获错误,但结果数据不可用.
这是一个具体的例子:
x = c(1,2,3,4,5,6)
y = c(1,1,1,0,0,0)
result = glm( y~x , family = binomial( link = "logit" ) )
Run Code Online (Sandbox Code Playgroud)
在tryCatch()中包装glm,结果不会填充.这是有道理的,因为glm的警告在有机会返回之前会被转换为错误.在这种情况下是否有最佳做法?是否只是在glm调用之前设置选项(warn = 0)然后在调用之后恢复?还是有更好的模式?
我确定这就是我想要做的.警告没有标准.有时警告是微不足道的,而有时则是相当严重的.这就是我将警告转换为默认错误的原因.尽管如此,我仍然需要能够在某些情况下忽略警告,我绝对肯定我可以忽略警告.在那些情况下,我想要结果!
编辑
这里是try-catch:
tryCatch( { result = glm( y~x , family = binomial( link = "logit" ) ) } , error = function(e) { print("test") } )
Run Code Online (Sandbox Code Playgroud)
尝试 suppressWarnings()
http://stat.ethz.ch/R-manual/R-patched/library/base/html/warning.html
x = c(1,2,3,4,5,6)
y = c(1,1,1,0,0,0)
result = suppressWarnings(glm( y~x , family = binomial( link = "logit" ) ))
result
Call: glm(formula = y ~ x, family = binomial(link = "logit"))
Coefficients:
(Intercept) x
165.32 -47.23
Degrees of Freedom: 5 Total (i.e. Null); 4 Residual
Null Deviance: 8.318
Residual Deviance: 2.215e-10 AIC: 4
Run Code Online (Sandbox Code Playgroud)
编辑1 ==================================
如果要glm()在代码中稍后的某个位置显示上述语句中的错误,可以添加该warnings()语句.
stoerr <- warnings()
stoerr
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred
Run Code Online (Sandbox Code Playgroud)