GNU Rで例外処理(try-catch)をすることが(たまに)あるのですが、どうしてもその使い方が覚えられず、(必要になると毎回)googleで検索して時間の無駄なので、自分用の覚書:
RのtryCatchは
tryCatch( {処理本体}, warning = function(w) {警告(warning)が発生した場合の処理}, error = function(e) {エラー(error)が発生した場合の処理}, finally = {最終的な処理} )
という構文になっており、「{処理本体}」の部分に「警告やエラーが発生するコード」を書き、警告が発生した場合に行う処理をwarningに、エラーが発生した場合に行う処理をerrorに書いておく(finallyは最終的な処理を書く)。
言葉で説明するとさっぱり分からないかもしれないので、簡単なコード例を以下に示します。
# An example of tryCatch() # 配列aaの範囲外を表示して、エラー発生させる # [References] # http://mazamascience.com/WorkingWithData/?p=912 aa <- array(1:3, c(1,3)) aa[1,2] <- NA arri <- 4 # Simple example tryCatch( {aa[1, arri]}, warning = function(aa){cat("A warning.\n ")}, error = function(aa){cat("An error.\n ")}, finally=cat("(A simple example).\n") ) # An example which an error occur in a for-loop tryCatch( {for(ii in 1:arri){cat(aa[1,ii],"\n")}}, warning = function(aa){cat("A warning.\n ")}, error = function(aa){cat("An error in function.\n ")}, finally=cat("(A for-loop example).\n") )