0
我需要在不干扰生成它们的混合 模型的操作的情况下捕获警告(在R中)。到目前为止,我已经看到了这两种变化。在 一个情况下,如果发生错误,导致该模型摔倒,我高兴地 能够记录从这些实例安装对象时,模型运行是SUCESSFUL穿插了失败的记录:诱骗警告,但不会将它们转换为错误
storOutcomes<-lapply(1:50, function(i)tryCatch(CustomlmerFnctn(Datasets[[i]]),
error=function(e) NULL))
在第二种情况下,我可以使用选项(警告= 2)将警告更改为错误,并使用类似于上述语法的 。不过,我看不出如何记录这两个安装 对象和收敛即的状态,至少两次警告出现,无论是
“In mer_finalize (ans) : singular convergence (7)”
或
“In mer_finalize (ans) : false convergence (8)“
,我想成为能够将收敛状态与模型参数相关联。 所以基本上我想知道如何捕捉警告,而不会将它们转换成 错误。我已经试过的options(warn=1)
,suppressMessages
,并sink(…, type(“output”,”message”))
组合与cat()
语句从模型函数产生一个迭代/集ID ,但只写了连续的ID来文件,而 在标准输出的警告。
非常感谢马丁 - 我不确定创建的警告和从模型运行生成的标准警告之间的区别 - 请参阅我的原始帖子中的示例。如果存储这样的警告,你的代码将如何改变? – user1704815
我不太确定我的理解。 'CustomlmerFnctn'可能会通过说出警告(“单数收敛(7)”)或类似的方式来产生警告,并且警告将按照我的回答进行处理。也许如果你提供了一个容易重现的例子,它会更清晰? –
我想我的意思是,你只需要从警告调用中移除“oops”,如下所示,警告=功能(w),警告函数(w) {“append(warn,conditionMessage(w)) invokeRestart(”muffleWarning“) }) – user1704815