作为我使用 R 分析的大量数据的一部分,我从包 robustbase 中反复调用 lmrob 以获得一系列数据集。
for (i in uniq.w) {
y <- x[x$w==i,4]
t<-seq(length(y))
result <- try(lmrob(y~t,na.action=na.exclude))
if(class(result) == "try-error") next;
output[[i]] <- result
}
然而,一些数据集返回错误“特征错误(ret,对称 = TRUE):'x' 中的无限或缺失值”。上述错误处理不会抑制这些。
所以我尝试类似
for (i in uniq.w) {
y <- x[x$w==i,4]
t<-seq(length(y))
result <- suppressWarnings(tryCatch(lmrob(y~t,na.action=na.exclude),error=function(e) e))
if(inherits(result,"error")) next
output[[i]] <- result
}
这确实抑制了错误和警告。然而,它们似乎仍然存在于系统中的某个地方。当我随后调用 lmrob 时,它不起作用。相反,它返回与上一次调用相同的结果。(当然,我很可能忽略了其他一些问题)。
处理这种情况的正确方法是什么,以便我可以重复调用 R 函数而不会出现影响后续批次的错误。
稍后我检查结果以确保解决方案收敛并丢弃任何未收敛的结果。感谢您的任何帮助。