r - 捕获错误然后分支逻辑

标签 r error-handling

如何编写 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/

相关文章:

r - 如何从 R 中的 4 个单独的音频文件中创建一个 4 channel 的音频文件?

在 R 中重新采样(折叠)以进行交叉验证

javascript - 尝试通过 AWS Pinpoint 发送语音消息时找不到资源

python - Python 中的 URL 错误

r - 如何在R中创建具有不同数字的字符串序列

r - 使用 R 将包含在具有患者 ID 的行之一中的信息填充到数据帧中的 'NA' s

r - 将索引函数应用于矩阵行中的每个值

c# - ServiceStack 是否需要 ResponseStatus?

WCF 剩余错误处理

SQL Server错误处理,判断记录是否存在,然后执行过程