0

ループ内に関数があり、エラーが発生した場合でもループを続行したいと考えています。私が試してみました:

for (num in 1:20) {
    tryCatch(fnABC(num),error=0)
}

しかし、エラーでループが停止し、次のメッセージが表示されます。

tryCatchOne(expr, names, parentenv, handlers[[1L]]) のエラー:
非関数を適用しようとしています

私が間違っていることを知っていただければ幸いです。

4

3 に答える 3

2

@joranとは異なり、ヘルプページの詳細セクションのいずれにもこれが文書化されているのを見ることができませんでしたが、tryCatchのエラー引数は関数であると想定されています。ただし、4 番目の例から明らかです (また、エラー メッセージから適切な考えを持っていれば)。

于 2013-03-15T18:51:22.983 に答える
1

「try」機能を使用してタスクを達成できます。

for (num in 1:20) {
    try({
        fnABC(num)
    }, silent=T)
}
于 2013-03-15T19:01:46.160 に答える
0
for (num in 1:20) {
tryCatch(fnABC(num),error = function(e) {error=0 } )
}
于 2013-05-31T12:07:56.730 に答える