我正在使用包中的某些功能fitdistrplus
作为我正在创建的包的一部分。
我试图防止在运行函数时在控制台中显示任何错误消息,而是希望将错误消息记录在我正在创建的错误日志中。
在大多数情况下,使用tryCatch()
使我能够做到这一点。
但特别是对于该fitdist()
函数,即使正在将消息写入错误日志(意味着tryCatch()
表达式正在运行),我也无法抑制在控制台中打印的错误消息。
我在下面的代码中复制了我的问题。
library(fitdistrplus)
file.create("error_log.txt")
func_desc<-function(x){
tryCatch({
descdist(data = x)
},error = function(e){
write(x = paste(Sys.time(),"Error in func_desc :",e$message,sep = " "),file = "error_log.txt",append = T,sep = "\n")
})
}
func_fit<-function(x,dist){
tryCatch({
fitdist(data = x,distr = dist)
},error = function(e){
write(x = paste(Sys.time(),"Error in func_fit :",e$message,sep = " "),file = "error_log.txt",append = T,sep = "\n")
})
}
# Creating a vector of repeated values which will result in an error
test<-rep(x = 1,times = 10)
func_desc(x = test)
# Results in an error and the message is written to the error log and not printed in the console
func_fit(x = test,dist = "beta")
# Results in an error and the message is both written to the error log and printed in the console
我想禁止打印此错误消息func_fit()
。
我已经尝试过以下替代方案:
try()
与silent = TRUE
. 仍然会打印错误消息。conditionMessage()
给出相同的结果。withCallingHandlers()
在某些帖子和线程中已提出建议,但我不确定如何正确实施。- 与函数一起使用
invisible()
仍然会打印错误。