for*_*ait 128 error-handling r
如何在R中"抛出"错误?我有一个函数,它采用数据框和一些列名称,并用它们做的事情.如果列不存在,我希望函数停止并根据它停止所有函数.
我已经看过recover并browse和traceback,但同时,他们似乎是接近,但不是我所期待的.
Dir*_*tel 100
见help(tryCatch):
条件由'
signalCondition'表示.此外,
'stop'和'warning'函数已被修改为也接受
条件参数.
后来在'See Also'下:
'
stop'和'warning'信号条件,'try'基本上是' '的简化版本tryCatch.
所以你可能想要stop.
Chr*_*nez 45
简单的例子:
f <- function(a, b){
if (a == 0){
stop("error message")
}
}
Run Code Online (Sandbox Code Playgroud)
除了Dirk提到的基本功能:
该R.oo包具有附加的异常处理的功能,包括掷()函数,它是非常有用的.您可以使用常用的try或trycatch函数捕获异常:
> try(throw("Division by zero.")); print("It's ok!");
Error: [2009-10-22 10:24:07] Exception: Division by zero.
[1] "It's ok!"
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多相关信息:http://www1.maths.lth.se/help/R/R.oo/
实际上,该函数stopifnot在您的代码中实现健全性检查非常方便。它接受几个逻辑表达式,如果其中任何一个的计算结果为 false,则返回错误。
示例:要检查数据框 'df' 中是否存在列 'c':
df <- data.frame(a = numeric(), b = numeric())
stopifnot(!is.null(df$c))
Run Code Online (Sandbox Code Playgroud)
这将引发以下错误:
Error: !is.null(df$c) is not TRUE
Run Code Online (Sandbox Code Playgroud)