0

警告を生成している混合モデルの操作に干渉することなく、(R で) 警告をトラップする必要があります。これまでに、これの 2 つのバリエーションを見てきました。モデルが転倒するエラーが発生する 1 つのケースでは、モデルの実行が成功し、失敗の記録が点在する場合に、これらのインスタンスから適合したオブジェクトを喜んで記録できます。

storOutcomes<-lapply(1:50, function(i)tryCatch(CustomlmerFnctn(Datasets[[i]]),
error=function(e) NULL )) 

2 番目のケースでは、options(warn=2) を使用して警告をエラーに変更し、上記と同様の構文を使用できます。ただし、適合したオブジェクトと収束のステータスの両方を記録する方法がわかりません。つまり、少なくとも 2 つの警告が表示されます。

“In mer_finalize (ans) : singular convergence (7)”

また

“In mer_finalize (ans) : false convergence (8)“

収束のステータスをモデル パラメータにリンクできるようにしたいと考えています。したがって、本質的に、警告をエラーに変換せずにトラップする方法を知りたいです。モデル関数から反復/データセット ID を生成するステートメントとoptions(warn=1)suppressMessages、の組み合わせを試しましたが、これは連続した ID をファイルに書き込むだけで、標準出力に警告が残ります。sink(…, type(“output”,”message”))cat()

4

1 に答える 1

0

あなたの複雑な例からはわかりにくいですが、多分

warn <- NULL
value <- withCallingHandlers({
    warning("oops")
    1 + 2
}, warning = function(w) {
    warn <<- append(warn, conditionMessage(w))
    invokeRestart("muffleWarning")
})

につながる

> warn
[1] "oops"
> value
[1] 3

?withCallingHandlersこれは、およびその追加ドキュメントにも示されていますdemo(error.catching)muffleWarningに記載されてい?warningます。

于 2012-09-28T03:17:58.943 に答える