2011-04-20 54 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())