我有一个函数,它会生成一个不需要的警告,但会保留值.
f <- function(a) {
if (a > 1) {
warning("an uninformative warning")
}
a
}
g1 <- function(b) {
withCallingHandlers(
x <-f(b),
warning = function(w) {
warning("A more informative warning")
})
x
}
g1(2)
#> Warning in (function (w) : A more informative warning
#> Warning in f(b): an uninformative warning
#> [1] 2
创建于2023-12-12年第reprex v2.0.2页
不幸的是,这会发出两个警告.
有tryCatch()
倍的是不保留的.而在withCallingHandlers()
中,这两个警告都被抛出.