tryCatch() 不会抑制错误消息
tryCatch() does not suppress the error messages
我想创建一个不打印任何错误消息的函数。
假设我有以下数据:
library(fitdistrplus)
vec <- rnorm(100)
然后下面给出错误信息:
fitdist(vec, "exp")
#> Error in computing default starting values.
#> Error in manageparam(start.arg = start, fix.arg = fix.arg, obs = data, : Error in start.arg.default(obs, distname) :
#> values must be positive to fit an exponential distribution
现在我想创建一个执行 return NULL 的函数。我用 tryCatch() 试过这个。问题是 fit_fn() 仍然 return 错误 'Error in computing default starting values':
fit_fn <- function(x){
tryCatch(fitdist(x, "exp"), error = function(e){ NULL })
}
fit_fn(vec)
#> Error in computing default starting values.
#> NULL
有什么方法可以做到这一点?此处仅应打印 NULL:
fit_fn(vec)
#> NULL
由 reprex package (v2.0.1)
创建于 2021-11-02
尽管它说这是一个错误,但显示的消息不是通过错误机制完成的,但输出是 being printed directly to the console 因为它已经在它自己的错误处理程序中。如果您想抑制该消息,则需要捕获该函数的输出。然后你可以忽略那个输出。
你可以用
fit_fn <- function(x){
capture.output(result <- tryCatch(fitdist(x, "exp"),
error = function(e){ NULL }))
result
}
fit_fn(vec)
# NULL
我想创建一个不打印任何错误消息的函数。
假设我有以下数据:
library(fitdistrplus)
vec <- rnorm(100)
然后下面给出错误信息:
fitdist(vec, "exp")
#> Error in computing default starting values.
#> Error in manageparam(start.arg = start, fix.arg = fix.arg, obs = data, : Error in start.arg.default(obs, distname) :
#> values must be positive to fit an exponential distribution
现在我想创建一个执行 return NULL 的函数。我用 tryCatch() 试过这个。问题是 fit_fn() 仍然 return 错误 'Error in computing default starting values':
fit_fn <- function(x){
tryCatch(fitdist(x, "exp"), error = function(e){ NULL })
}
fit_fn(vec)
#> Error in computing default starting values.
#> NULL
有什么方法可以做到这一点?此处仅应打印 NULL:
fit_fn(vec)
#> NULL
由 reprex package (v2.0.1)
创建于 2021-11-02尽管它说这是一个错误,但显示的消息不是通过错误机制完成的,但输出是 being printed directly to the console 因为它已经在它自己的错误处理程序中。如果您想抑制该消息,则需要捕获该函数的输出。然后你可以忽略那个输出。 你可以用
fit_fn <- function(x){
capture.output(result <- tryCatch(fitdist(x, "exp"),
error = function(e){ NULL }))
result
}
fit_fn(vec)
# NULL