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