【问题标题】:Catch an error by producing NA通过产生 NA 来捕获错误
【发布时间】:2013-01-18 02:29:25
【问题描述】:

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

我现在用

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

我也尝试过使用 tryCatch。

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

【问题讨论】:

    标签: r error-handling


    【解决方案1】:

    试试

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

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

    【讨论】:

    • 这是一个很棒的小 T/F 指标。谢谢
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-09
      • 2015-01-14
      • 1970-01-01
      • 2017-07-19
      • 2017-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多