gpt4 book ai didi

R 循环 : How can I determine the iteration that caused warnings?

转载 作者:行者123 更新时间:2023-12-04 19:58:21 24 4
gpt4 key购买 nike

我正在运行模拟研究,需要为导致 R 打印警告消息的每次模拟运行创建一个指标变量。由于我模拟了数据,有时我试图拟合的模型可能不会收敛。因此,我需要使用指标变量存储未收敛的迭代。我使用了“options(warn=1)”,所以我可以在控制台上看到模型失败的迭代。但是我的代码没有正确保存指标。我总共需要运行 100 次模拟。

这是我的代码的简化版本:

for (s in 1:100){

myfit=...
if (!is.null(warnings())) {fail[s]=1} else {fail[s]=0}
}

非常感谢任何建议!

谢谢,
莉莉

最佳答案

使用 tryCatch .

这是一个模仿您想要的行为的最小示例:

silly_list <- vector("list", 26)
fail <- numeric(26)
for(s in 1:26) {
l <- letters[s]
tryCatch(silly_list[[s]] <- factor(1:3, levels = c("a", l, "b")),
warning = function(w) {
print(w)
fail[s] <<- 1
})
}
## <simpleWarning in `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, seq_along(levels))): duplicated levels in factors are deprecated>
## <simpleWarning in `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels, seq_along(levels))): duplicated levels in factors are deprecated>
print(fail)
## [1] 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

并且无需更改 options("warn") .

关于R 循环 : How can I determine the iteration that caused warnings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com