【发布时间】:2014-11-10 01:45:46
【问题描述】:
我正在运行一项模拟研究,需要为导致 R 打印警告消息的每次模拟运行创建一个指示变量。由于我模拟了数据,有时我试图拟合的模型可能不会收敛。因此,我需要使用指标变量存储未收敛的迭代。我使用了“options(warn=1)”,所以我可以在控制台上看到模型失败的迭代。但是我的代码没有正确保存指标。我总共需要运行 100 次模拟。
这是我的代码的简化版本:
for (s in 1:100){
myfit=...
if (!is.null(warnings())) {fail[s]=1} else {fail[s]=0}
}
非常感谢任何建议!
谢谢, 莉莉
【问题讨论】:
-
“未正确保存指标”是什么意思?你在循环之前初始化了
fail <- numeric(100)吗?另外我建议在这里明确使用tryCatch。 -
是的,我初始化失败。当我运行代码时,所有的失败值都是 0,即使我知道几次迭代没有收敛。我还使用了“try()”函数,但对于所有迭代仍然失败=0。 myfit=try(...) if (is(myfit,"try-error")) {fail[s]=1} else {fail[s]=0}
-
那是因为您正在捕获警告,而不是错误。
-
你是对的!不知道我是怎么错过这么明显的东西的。
标签: r