我如何检查并捕获R中的错误,例如,log(“a”)产生“日志中的错误(”a“):数学函数的非数字参数”错误。有没有办法,我可以执行以下样式代码来检查是否产生了这个错误,返回一个语句?我意识到可以使用tryCatch块但不知道如何使用它们来检查特定的错误消息。
if (log("a") == "Error in log("a") : non-numeric argument to mathematical function")
{
print("error returned")
}
答案 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"