如何编写 R 代码,以便在发生错误情况时能够在代码中执行不同的路径?我正在使用一个容易引发错误的函数。当它遇到错误条件时,我想执行不同的函数。下面是一个具体的例子:
require(SuppDists)
parms <- structure(list(gamma = -0.841109044800762, delta = 0.768672140584442,
xi = -0.359199299528801, lambda = 0.522761187947026, type = "SB"), .Names = c("gamma",
"delta", "xi", "lambda", "type"))
pJohnson(.18, parms)
pJohnson 函数应该失败并出现以下错误:
Error in pJohnson(0.18, parms) :
Sb values out of range.
我可以使用以下方法使错误消失:
try( pJohnson(.18, parms), silent=T)
但我真正想做的是,如果 pJohnson(.18, parms)
返回错误,则执行函数 alternativeFunction()
。
看起来 withCallingHandlers()
函数应该可以帮助我,但我不知道如何捕获错误并使其运行 alternativeFunction()
仅在出现错误情况时。
最佳答案
t <- try(pJohnson(.18, parms))
if("try-error" %in% class(t)) alternativeFunction()
关于r - 捕获错误然后分支逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158780/