1

これが私の問題です:

ループを使用して、オブジェクトのリストに対して関数を実行しています。ほとんどのオブジェクトは正常に動作し、目的の出力を生成します。ただし、他のいくつかはエラーを生成し、これが発生すると、ループの実行が停止します。

私は、ループがエラーを与えるオブジェクトを見つけるたびに、ループが問題のあるオブジェクトを無視して次のオブジェクトに進む方法を見つけようとしています。したがって、ループはリスト全体の最後まで実行でき、正常に機能したオブジェクトの出力のみを生成します。

私は次のようなループを実装しています:

for(i in n:m){
   myfunction
}

ありがとう!

4

2 に答える 2

2

失敗する可能性のあるものをラップするだけですtry()

for(i in n:m){
out[[i]] = try( myfunction )

}  
  out

try()おそらく、内に置く方が良いでしょうmyfunction()。しかし、その機能が何を意味するのかわかりません。場合によっては、出力をNAに事前に割り当てることをお勧めします。次に、forループの開始時に次のように質問します。

 if("conditionwherefunctionfails") i = i+1

その反復をスキップしてループを続行します。

于 2013-02-25T21:59:20.233 に答える
1

先に進むことはほとんどありませんが、問題のあるオブジェクトを認識するためにifステートメントが必要であり、何もしません。それ以外の場合は、関数を実行します。

for(i in n:m){
    if ( i != ... ) { //replace ... with NaN or null, or whatever is causing the error
        myfunction(i)
    }
}

限られた情報で、私はあなたに何をすべきかを言うことができません...

于 2013-02-25T21:58:33.287 に答える