11

コードが停止するのではなく、関数がエラーを返したときに NA を取得したいと考えています。

私は現在使用しています

try.test<-try(results<-lm(log(0)~1))
if(class(try.test)=="try-error"){results<-NA}

また、tryCatch で遊んでみました。

単一の機能/ライン ソリューションを見つけたいと思います。

4

2 に答える 2

25

試す

result <- tryCatch(lm(log(0)~1), error=function(err) NA)

しかし、これは log(0) からのエラーだけでなく、すべてのエラーをキャッチします。

于 2013-02-03T02:49:30.673 に答える
6

上品ではありませんが、問題を解決する同様に短い方法です。

results <- NA
try(results<-lm(log(0)~1), silent = TRUE)

エラーを処理するエレガントな方法を探しているなら、モナドの概念を調べることをお勧めします。これらの構造を使用すると、スクリプト内の "if(!na(x))...." ボイラープレートの量が減ります。

于 2013-02-03T02:49:41.190 に答える