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() 関数を作成する
1 つの値のログを取得し、それを 2 番目の値で除算しようとする次の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>
関数に引数を 1 つだけ指定したため、「エラーが発生しました」というメッセージが表示され、R によって生成された正確なエラーも表示されます。
シナリオ 3: 警告が発生します。
次のコードは、警告が発生するシナリオで関数を使用する方法を示しています。
#run function
log_and_divide(-10, 2)
A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA
最初の引数に負の値を指定したため、R は負の値の対数を計算できません。そのため、「警告が発生しました」というメッセージを受け取ります。R によって生成された正確な警告が表示され、関数は次のようにNAを返します。は負の値を持ちます。結果。
追加リソース
次のチュートリアルでは、R で他の一般的な操作を実行する方法について説明します。