通过生成NA来捕获错误

Eti*_*rie 7 error-handling r

我希望在函数返回错误而不是代码暂停时获得NA.

我目前正在使用

try.test<-try(results<-lm(log(0)~1))
if(class(try.test)=="try-error"){results<-NA}
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用tryCatch.

我想找到一个功能/线路解决方案.

Mar*_*gan 17

尝试

result <- tryCatch(lm(log(0)~1), error=function(err) NA)
Run Code Online (Sandbox Code Playgroud)

但这会捕获所有错误,而不仅仅是log(0)中的错误.


Rya*_*ell 5

一种不太优雅但同样简短的解决问题的方法。

results <- NA
try(results<-lm(log(0)~1), silent = TRUE)
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找一种优雅的方式来处理错误,我建议您研究 monad 的概念;使用这些结构可以减少脚本中“if(!na(x))....”样板的数量。