2013-02-03 50 views
5

我希望在函數返回錯誤而不是代碼停止時獲得NA。通過生成NA捕捉錯誤

我目前使用

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

我也試圖與tryCatch玩。

我想找到一個單一的功能/線路解決方案。

回答

12

嘗試

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

但這捕獲所有的錯誤,而不僅僅是從數(0)。

4

這不是一種優雅,但同樣簡短的解決問題的方法。

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

如果您正在尋找一種優雅的方式來處理錯誤,我建議您查看monad的概念;使用這些結構可以減少腳本中「if(!na(x))....」樣板的數量。