2011-04-20 91 views
33

我想使用命令行清除warnings()列表。R:如何清除所有警告

我曾嘗試沒有成功

> rm(last.warning, envir = baseenv()) 
Error in rm(last.warning, envir = baseenv()) : 
cannot remove variables from the base environment 

什麼想法?

回答

66

嘗試assign("last.warning", NULL, envir = baseenv())

+1

感謝它是完美的 – RockScience 2011-04-20 03:38:24

+1

工程像魔術。 – TMS 2013-07-26 06:30:42

+4

我同意這是正確的答案,但我會敦促開始用戶在使用這樣的命令之前思考。這些用戶試圖做什麼?在修改一個底層變量之前要考慮一下(對於你的C++用戶來說,認爲是「私有」)。如果你想要一個新的R會話,開始一個新的R會話。使用這個和rm(list = ls())不會讓你一個。相反,如果你想刪除不正確的警告並且不應該解決(你是否確定這個?),那麼應該考慮在相應的函數中使用suppressWarnings()。否則,你可能會錯過重要的警告。 – scottkosty 2013-12-29 02:26:31

4

看看suppressWarnings()來阻止顯示的警告。在help page for warnings

注意,它說:

」 ......這是無證其中 last.warning存儲也不是說這是 可見,這是受 改變之前。 [R 2.4.0它被存儲在工作區 ,但不再......」

+7

比爾,你的第二個鏈接不會爲任何人誰不具備R-幫助服務器上的回送接口上的端口22913運行工作。 – 2011-04-20 03:33:57

+1

我看了這個功能,但我仍然想要有警告。我只是想在某個時候清理堆棧。 – RockScience 2011-04-20 03:35:41

+0

鏈接現已修復。 – 2011-04-20 09:22:24

4

我同意,我婉t使用try()並收集該try()生成的警告。

我現在的解決方案是

assign("last.warning", NULL, envir = baseenv()) 
    myFit <- try(...) 
    warned <- warnings() 
assign("last.warning", NULL, envir = baseenv())