0

我需要在不干扰生成它们的混合模型的操作的情况下捕获警告(在 R 中)。到目前为止,我已经研究了两种变体。在一种情况下,当发生导致模型翻倒的错误时,我很高兴能够在模型运行成功时记录这些实例中的拟合对象,并散布故障记录:

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

在第二种情况下,我可以使用 options(warn=2) 将警告更改为错误,并使用与上述类似的语法。但是,我看不到如何记录拟合对象和收敛状态,即至少出现两个警告

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

或者

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

我希望能够将收敛状态与模型参数联系起来。所以基本上我想知道如何捕获警告而不将它们转化为错误。我已经尝试将options(warn=1),suppressMessagessink(…, type(“output”,”message”))cat()从模型函数生成迭代/数据集 ID 的语句结合使用,但这只会将连续 ID 写入文件,而在标准输出上留下警告。

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 回答