如何在 r 中编写第一个 trycatch() 函数
您可以使用 R 中的tryCatch()函数返回表达式的值,或者在遇到警告或错误时生成自定义消息。
该函数使用以下基本语法:
my_function <- function (x, y){ tryCatch ( #try to do this { #some expression }, #if an error occurs, tell me the error error= function (e) { message(' An Error Occurred ') print(e) }, #if a warning occurs, tell me the warning warning= function (w) { message(' A Warning Occurred ') print(w) return (NA) } ) }
以下示例展示了如何在实践中使用tryCatch()函数。
示例:在 R 中创建 tryCatch() 函数
假设我们创建以下tryCatch()函数,该函数尝试获取一个值的对数,然后将其除以第二个值。
如果发生错误,我们将输出消息“发生错误”,然后将错误打印到 R。
如果发生警告,我们将输出消息“发生警告”,将警告打印到 R,然后返回 NA 值。
如果没有错误或警告发生,我们将简单地返回函数结果。
log_and_divide <- function (x, y){
tryCatch (
{
result = log(x) / y
return (result)
},
error= function (e) {
message(' An Error Occurred ')
print(e)
},
warning= function (w) {
message(' A Warning Occurred ')
print(w)
return (NA)
}
)
}
让我们在不同的场景下运行这个函数。
场景 1:没有发生错误或警告。
以下代码展示了如何在不出现错误或警告的情况下使用该函数。
#run function
log_and_divide(10, 2)
[1] 1.151293
由于没有发生错误或警告,该函数仅返回表达式的结果,结果为1.151293 。
场景2:发生错误。
下面的代码展示了在出现错误的场景下如何使用该函数:
#run function
log_and_divide(10)
An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
argument "y" is missing, with no default>
由于我们只向函数提供了一个参数,因此我们会收到一条消息“发生错误”,并且我们还会看到 R 产生的确切错误。
场景3:出现警告。
下面的代码展示了在出现警告的场景下如何使用该函数:
#run function
log_and_divide(-10, 2)
A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA
由于我们为第一个参数提供了负值,R 无法计算负值的对数,因此我们收到消息“发生警告”,我们看到 R 生成的确切警告,并且函数返回NA为有负值。结果。
其他资源
以下教程解释了如何在 R 中执行其他常见操作: