當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R warnErrList 從列表中收集並總結錯誤


R語言 warnErrList 位於 utils 包(package)。

說明

將錯誤(類 "error" ,通常來自 tryCatch )從列表 x 收集到 “summary warning” 中,默認情況下生成 warning 並將該消息保留為 "warningMsg" 屬性。

用法

warnErrList(x, warn = TRUE, errValue = NULL)

參數

x

list ,通常來自將模型應用於數據(子)集列表,例如使用 tryCatch(*, error = identity)

warn

邏輯指示是否應調用warning()

errValue

應替換錯誤的值。

x 參數具有相同長度和名稱的 list,其中錯誤組件默認替換為 errValueNULL,並在 "warningMsg" 屬性中進行匯總。

例子

## Regression for each Chick:
ChWtgrps <- split(ChickWeight, ChickWeight[,"Chick"])
sapply(ChWtgrps, nrow)# typically 12 obs.
nlis1 <- lapply(ChWtgrps, function(DAT) tryCatch(error = identity,
                      lm(weight ~ (Time + I(Time^2)) * Diet, data = DAT)))
nl1 <- warnErrList(nlis1) #-> warning :
## 50 times the same error (as Diet has only one level in each group)
stopifnot(sapply(nl1, is.null)) ## all errors --> all replaced by NULL
nlis2 <- lapply(ChWtgrps, function(DAT) tryCatch(error = identity,
                      lm(weight ~ Time + I(Time^2), data = DAT)))
nl2 <- warnErrList(nlis2)
stopifnot(identical(nl2, nlis2)) # because there was *no* error at all
nlis3 <- lapply(ChWtgrps, function(DAT) tryCatch(error = identity,
                      lm(weight ~ poly(Time, 3), data = DAT)))
nl3 <- warnErrList(nlis3) # 1 error caught:
stopifnot(inherits(nlis3[[1]], "error")
        , identical(nl3[-1], nlis3[-1])
        , is.null(nl3[[1]])
)

## With different error messages
if(requireNamespace("nlme")) { # almost always, as it is recommended
 data(Soybean, package="nlme")
 attr(Soybean, "formula") #-> weight ~ Time | Plot  => split by "Plot":
 L <- lapply(split(Soybean, Soybean[,"Plot"]),
             function(DD) tryCatch(error = identity,
                 nls(weight ~ SSlogis(Time, Asym, xmid, scal), data = DD)))
 Lw <- warnErrList(L)
} # if <nlme>

也可以看看

warnErrList() 實用程序已在推薦包 nlme 中的lmList()nlsList() 中永久使用。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Collect and Summarize Errors From List。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。