シミュレーションに使用している複雑で長い関数があります。これはエラーを生成する可能性があり、ほとんどの場合、分散がゼロの等しい値で終わるランダムベクトルに関係し、PCAまたはロジスティック回帰のいずれかに供給されます。
doMC
とを使用してクラスター上で実行していますplyr
。tryCatch
エラーの可能性が多く、それぞれの確率が小さいため、関数内のすべての小さなことをしたくありません。
tryCatch
すべての小さな行を実行するのではなく、実行ごとにtryCatchを実行するにはどうすればよいですか?コードは次のようなものです。
iteration = function(){
a really long simulation function where errors can happen
}
reps = 10000
results = llply(1:reps, function(idx){out<-iteration()},.parallel=TRUE)
約1年後に編集:
パッケージforeach
により、これは以前よりも大幅に簡単になりますplyr
library(foreach)
output <- foreach(i=1:reps, .errorhandling = 'remove')%dopar%{
function
}