0
我发现这非常有帮助工厂的任何功能转换为捕捉自己的价值观,错误和警告功能(How do I save warnings and errors as output from a function?):拯救功能警告/错误不显示在屏幕上
factory <- function(fun)
function(...) {
warn <- err <- NULL
res <- withCallingHandlers(
tryCatch(fun(...), error=function(e) {
err <<- conditionMessage(e)
NULL
}), warning=function(w) {
warn <<- append(warn, conditionMessage(w))
invokeRestart("muffleWarning")
})
list(res, warn=warn, err=err)
}
我的问题是,屏幕上还显示错误/警告(在工厂捕获的顶部)。我怎样才能改变它,使错误/警告不显示在屏幕上? 谢谢
你能澄清你的意思吗? 'f = factory(stop(“oops”)); res = f()'没有任何输出返回到屏幕。 –
你是对的马丁......我不清楚。我在工厂使用的功能从金融网站下载流数据。它输出几条消息通过猫屏幕。其中一些消息最终会成为错误并可能阻止该功能。该函数有一个详细的参数,可以阻止所有的猫消息。 – kalka
如果我设置verbose = T,工厂会正确捕获所有警告/错误,但也会显示屏幕上的所有猫。如果我设置了verbose = F,工厂会错过通过cat发送的重要警告(即使阻塞该函数),并且不会在屏幕上显示猫。该功能非常复杂,我无法改变它。我宁愿稍微修改一下工厂,以便猫的消息被捕获为警告(因为它已经发生),但没有显示在屏幕上。 – kalka