我有一组复杂的 R 脚本,并决定通过调用所有与调试相关的消息message()
。我试图找到一种方法来抑制所有消息,并偶然发现了这个SO post,建议我尝试使用sink()
。所以我将以下代码行插入到我的脚本中,并设置我的config$debug_mode <- FALSE
:
if (!config$debug_mode){
messages <- file("messages.Rout", open = "wt")
sink(messages, type = "message")
}
其他 SO 帖子和 R 文档说只需调用sink()
or sink(file=NULL)
停止之前的转移,但这对我不起作用。即使在打电话之后sink()
,我没有看到 R Studio 控制台输出message()
来电。还,sink.number()
回报0
,这似乎表明没有适当的改道。那么,为什么我不再在 R Studio 控制台中看到输出呢?
当您最初表示只想接收消息时,运行sink()
不会关闭该行为。相反,使用sink(type="message")
,这就是你想要的。
> config <- list()
> config$debug_mode <- FALSE
> if (!config$debug_mode){
+ messages <- file("messages.Rout", open = "wt")
+ sink(messages, type = "message")
+ }
> message("trial")
> sink(type="message")
> message("trial")
trial
这可能是在“警告”部分中(间接)引用的内容?sink
帮助文件,其中包含以下注释:
除非您了解源代码,否则不要下沉消息流
实施它以及因此的陷阱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)