R での条件処理に tryCatch 関数を使用する
この記事では、R での条件処理に tryCatch
関数を使用する複数の方法を示します。
tryCatch
を使用して R のエラー状態を処理する
R 言語では、3 種類の組み込み条件が提供されており、コードからの例外としてスローできます。従来、最も深刻なものはエラーと呼ばれ、通常は機能を終了するか、実行が停止します。次に、関数の実行中にエラーが発生したかどうかを示す警告が表示されますが、問題を部分的に処理することはできます。最後に、いくつかの軽度の問題についてユーザーに通知するために使用されるメッセージがあります。これらの 3つの条件には、stop
、warning
、および message
という名前の対応する関数があり、これらを呼び出して特定の条件を発生させることができます。
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1(10)
出力:
log( 10 ) = [1] 2.302585
たとえば、前のコードは、単一の引数 x
を取り、log(x)
の結果をいくつかの追加のフォーマットで出力する f1
という名前の関数を定義しています。ユーザーが数値以外の引数を f1
関数に渡すと、エラーがスローされることに注意してください。ハンドラーを tryCatch
関数に登録することで、このエラーを処理できます。
f1 <- function(x) {
cat("log(", x, ") = ", (log(x)))
}
f1("f")
出力:
Error in log(x) : non-numeric argument to mathematical function
ハンドラーを登録すると、このエラーのデフォルトコードがユーザー指定のコードで上書きされることに注意してください。次の例は、デフォルトのエラーメッセージがカスタム出力文字列に置き換えられる方法を示しています。一方、エラー状態が発生しない場合、以下の関数は正常に動作します。
f1 <- function(x) {
tryCatch(
error = function(cnd) "The custom output that we need to print",
cat("log(", x, ") = ", (log(x)))
)
}
f1("f")
出力:
[1] "The custom output that we need to print"
tryCatch
関数の一般的な使用法は、エラー条件がスローされたときに実行する必要があるコードブロックを実装することです。error = function(cnd)
行の後の中括弧でエラーが発生したときに実行されるコードブロックを指定します。エラーコードブロックの後の次の行は、通常、ハンドラーがアクティブなときに実行されます。
f1 <- function(x) {
tryCatch(
error = function(cnd) {
print("hello")
log(10)
},
cat("log(", x, ") = ", (log(x)))
)
}
f1("x")
出力:
[1] "hello"
[1] 2.302585