Rのfor文を回していると、途中でエラーが出て止まってしまいました。
その解決策としてエラーが出てもとりあえず最後まで回してくれるtry関数を紹介します。
以下のコードは10次元ベクトルの成分をlogで生成。
logを計算する際、はからのランダムサンプルであるためエラーを返すことがある。
以下ではエラーで止まることをtry関数で防ぎ、while関数でそれぞれ10個ずつ生成できるようにコードを書いた。
L <- 10 a <- numeric(L) b <- numeric(L) l <- 1 while(l <= L){ try(a[l] <- log(rnorm(1,0,1))) if(class(a[l]) == "try-error"){ a[l] <- NA } try(b[l] <- log(rnorm(1,0,1))) if(class(b[l]) == "try-error"){ b[l] <- NA } if(is.na(a[l]) | is.na(b[l])){ l <- l-1 } l <- l+1 } a b
実行結果は以下のとおり。それぞれ10個正しく生成できました。
[1] 0.3591358 0.1832536 -3.6249145 -0.4584207 0.1969482 -1.8525264 -1.3818560 -1.3684374 -0.9294030 -2.8535764 [1] -0.54935989 -0.45241981 -0.31944820 0.02388071 -1.25626751 -1.55962373 -1.34217871 -3.33795157 -3.33510165 [10] -0.52030770
お役に立てれば幸いです。