« [R]コードを文字列で与えて実行させる | トップページ | [R]空の日付ベクトルを作成する »

2014年4月11日 (金)

[R]コードのエラーを抑制もしくは判定する

Rのスクリプトは、コードの実行時にエラーが発生するとスクリプトが中断する(例えばread.table関数で中身が空のファイルを読み込んだ時など)。

try関数を使うとこのエラーの発生有無の判定とスクリプトの中断を抑制することができる。

エラーが発生する可能性があるコードをtry関数内に書き、そのtry関数の戻り値を得られるようにしておく。エラーが発生したときにはスクリプトは中断しない。try関数に含めたコードがエラーを発生したか否かの判定は、try関数の戻り値を見ればよい。エラー発生時は「try-error」という文字列になるので、それで判定するようにしておけばよい。

> a  # aというベクトルがない場合
エラー:  オブジェクト 'a' がありません
> 1:3
[1] 1 2 3
> 1:a  # aというベクトルがないのでエラーが発生する
エラー:  オブジェクト 'a' がありません
> r <- try(1:3, silent = T)
> class(r)  # エラーが発生せずに数値ベクトルが作成されている
[1] "integer"
> r
[1] 1 2 3
> r <- try(1:a, silent = T)  # 上ではエラーが発生してシステムが中断したが、ここでは中断しない
> class(r)
[1] "try-error"
> mode(r)
[1] "character"
> is.character(class(r))
[1] TRUE
> class(r) == "try-error"
[1] TRUE

« [R]コードを文字列で与えて実行させる | トップページ | [R]空の日付ベクトルを作成する »

R(数値計算)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]コードを文字列で与えて実行させる | トップページ | [R]空の日付ベクトルを作成する »

無料ブログはココログ

■■

■■■