11

当函数返回错误而不是代码停止时,我希望得到 NA 。

我目前使用

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

我也尝试过使用 tryCatch。

我想找到一个单一的功能/线路解决方案。

4

2 回答 2

25

尝试

result <- tryCatch(lm(log(0)~1), error=function(err) NA)

但这会捕获所有错误,而不仅仅是来自 log(0) 的错误。

于 2013-02-03T02:49:30.673 回答
6

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

results <- NA
try(results<-lm(log(0)~1), silent = TRUE)

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

于 2013-02-03T02:49:41.190 回答