检查R中的错误

时间:2017-09-26 03:42:04

标签: r

我如何检查并捕获R中的错误,例如,log(“a”)产生“日志中的错误(”a“):数学函数的非数字参数”错误。有没有办法,我可以执行以下样式代码来检查是否产生了这个错误,返回一个语句?我意识到可以使用tryCatch块但不知道如何使用它们来检查特定的错误消息。

if (log("a") == "Error in log("a") : non-numeric argument to mathematical function")
{
  print("error returned")
}

1 个答案:

答案 0 :(得分:1)

错误的类型在属性中。我将展示如何检查该列表的$ message元素。 try()的值可以是表达式的值,也可以是" try-error":

res <- try(log("a"), TRUE)
str(res)
#-----
Class 'try-error'  atomic [1:1] Error in log("a") : non-numeric argument to mathematical function

  ..- attr(*, "condition")=List of 2
  .. ..$ message: chr "non-numeric argument to mathematical function"
  .. ..$ call   : language log("a")
  .. ..- attr(*, "class")= chr [1:3] "simpleError" "error" "condition"
#------------

 if( grep("non-numeric", attr(res,"condition")$message ) ) {print("argument not a number")}
#[1] "argument not a number"