Linux マシン (サーバー) で R 2.15.3 でサブサンプリング タスクを実行しています。サブサンプリングの繰り返しでエラーが発生します (不適切なサブサンプリング データ セットが原因です)。
ループを停止せずに多くのサブサンプリング反復を実行できるようにするには、各反復でtry()
次の方法を使用します。
set.seed(1234)
interestingobject <- list()
for(i in 1:300) {
anyproblems <- try(0 + "0")
while(class(anyproblems) == "try-error") {
anyproblems <- try({
<code line 1>
<code line 2>
<code line 3>
.
.
.
})
}
interestingobject[[i]] <- <object from iteration i>
}
今、私は次の「奇妙な」問題を抱えています:
数回繰り返した後、最初のエラーが で発生し
try({ ... })
ます。「while」ループはエラーが発生しなくなるまで続行する必要があるため、これは問題ではないと思いますtry({ ... })
。しかし問題は、最初のエラーが発生した後、同じサンプルが描画され、その理由がわからないため、同じエラーが何度も発生することです。
更新:「コード行 1」の行の前に、コード内で乱数 ( cat(runif(1), "\n")
) を描画するだけでtry({ ... })
最後まで進みますが、1 つがループに入ります。これは、「interestingobject」の要素が反復ごとに繰り返されることを意味します。これがどのように起こるのか本当にわかりません。この問題は、R が乱数を生成/処理する方法 (またはこのようなもの) に関連する何かによって何らかの形で説明できると思います。
正確なコードがないとおそらく少し難しいように思えますが、後者はかなり長くて紛らわしいので、おそらくあまり役に立ちません。
このようなことが起こることは、どのように説明できますか?
描画された乱数もループ内で繰り返されるため、実際には同じことが数回の反復ごとに繰り返されます。
編集(おそらく問題には重要ではありません):コードのいくつかの仕様:各反復でクロス検証が行われ、ネストされたクロス検証もあり、クロス検証を使用して、チューニングパラメーターが各外側クロスで最適化されます検証の繰り返し。
チューニング パラメーターのチューニング (したがって、対応する相互検証での折り畳みへのランダムな分割も) は、コードの外部で定義された自己記述関数によって行われることを知っておく価値があるかもしれません。
更新 2: コメンターのおかげで、デバッグを使用したところ、最初のエラーが発生した場所 (1 つのクラスからの観測のみ) と、ループが開始された場所でも警告が表示されることがわかりました:
get(.obj, environment = dump[[.selection]]) : 中断された promise 評価の再開
たぶんこれが役立ちます。この警告メッセージは何を意味するのでしょうか? 乱数発生器のシードがリセットされたのでしょうか?