理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> R >> R言語の例外処理
このエントリーをはてなブックマークに追加

R言語の例外処理

作成日:2014.5.19
環境:R 3.0.3
  1. try関数
  2. tryCatch関数

tryまたはtryCatchを使うと、エラーが生じた時に実行を止めずに処理することが出来る。

try関数

try関数は、第一引数の関数にエラーが生じた時、try-errorというクラスのオブジェクトを返す。 class関数を用いて返り値のクラスを調べることでエラーが生じたかどうか判断できる。

ret <- try(rep("A",-1)) # repの第二引数に負の数は使えないのでエラー
if(class(ret)=="try-error"){
  print("Error occurred.")
}
Error in rep("A", -1) :  'times' 引数が不正です 
[1] "Error occurred."
エラーメッセージが出力されているが、エラーメッセージを出力しないようにするには、tryの第二引数にsilent=TRUEを付けると良い。
ret <- try(rep("A",-1),silent=TRUE) 

tryCatch関数

tryCatch関数は、第一引数の関数にエラーが生じた時に、error=で指定した関数を実行する。 この関数の引数にエラーの内容が入ったオブジェクトが渡されるので、それを受け取るような関数にしなければならない。 error=で指定した関数の返り値がそのまま返される。

また、エラーが生じたかどうかに関わらず必ず実行する関数をfinally=に指定することが出来る。 この関数が仮に返り値を出してもその値はtryCatchの返り値には影響しない。

ret <- tryCatch(rep("A",-1),
                error=function(e){
                    message(e)
                    cat("\n")
                }
                )

error=には無名関数を与えて、その中で処理する。

参考サイト・参考文献