2016-10-17 9 views
0

thisに関連する質問エラーが発生した場合にNULLを出力する簡単な関数をビルドしたかったのです。ラップにエラーが発生する

私の最初に考えたのは

lapply_with_error <- function(X,FUN,...){  
    lapply(X,tryCatch({FUN},error=function(e) NULL)) 
} 

tmpfun <- function(x){ 
    if (x==9){ 
     stop("There is something strange in the neiborhood") 
    } else { 
     paste0("This is number", x) 
    } 
    } 


tmp <- lapply_with_error(1:10,tmpfun) 

ような何かをすることでした。しかしtryCatchは、それが思わエラーをキャプチャしません。何か案は?

答えて

2

あなたが機能してlapplyを提供する必要があります。

lapply_with_error <- function(X,FUN,...){  
    lapply(X, function(x, ...) tryCatch(FUN(x, ...), 
             error=function(e) NULL)) 
} 
+0

ナイスキャッチ!どうもありがとう。私はそれがどのように動作するのだろうか?関数は呼び出されますが、エラーはキャッチされません。 – DJJ

+0

'tryCatch({tmpfun}、error = function(e)NULL)'の出力を確認してください。 'tryCatch'に渡す式はエラーを起こさず、したがって変更されずに返されます。 – Roland

関連する問題