1
作爲我使用R分析的大量數據的一部分,我從包robustbase中對lmrob反覆調用一系列數據集。 「如何處理重複調用lmrob中的錯誤R
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
}
但是有些數據集返回錯誤」eigen(ret,symmetric = 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函數沒有錯誤影響後續批次。
後來,我檢查結果以確保解決方案收斂並放棄沒有的結果。感謝您的幫助。
你是什麼意思「AREN」 t通過上述錯誤處理抑制「? 'try'應該會發現任何錯誤,包括你提到的錯誤。 –
@HongOoi你是對的,但由於某種原因,第一個例子仍然會引發錯誤。必須有一些我可以忽略的東西。至於我的其他評論關於隨後的調用返回相同的結果,那是我在其他地方的錯誤。 agstudy的答案行得通。 – Antonio2100