R - 在某些情况下忽略警告错误,获得结果

SFu*_*n28 5 r try-catch

我设置选项(警告= 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)

bil*_*080 8

尝试 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)