エラー条件が発生した場合にコード内の別のパスを実行できるようにする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)
_
しかし、私が本当にやりたいことは、alternativeFunction()
がエラーを返した場合に関数pJohnson(.18, parms)
を実行することです。
withCallingHandlers()
関数は私に役立つはずですが、エラーをキャプチャーし、エラー状態でのみalternativeFunction()
を実行させる方法を理解できません。
t <- try(pJohnson(.18, parms))
if("try-error" %in% class(t)) alternativeFunction()
別のオプションは、tryCatch
式を使用することです。次に例を示します。
vari <- 1
tryCatch(print("passes"), error = function(e) print(vari)) # => passes
tryCatch(stop("fails"), error = function(e) print(vari)) # => 1
あなたはエラーブロック内で好きなことをすることができるので、あなたの場合、このようなものがうまくいくはずです:
tryCatch(pJohnson(.18, parms), error=function(e) alternativeFunction())
これは実際のエラーの使用目的ではありませんが、少し簡潔です。