【问题标题】:How can you always suppress messages in R?你怎么能总是抑制 R 中的消息?
【发布时间】:2014-07-15 20:38:42
【问题描述】:

我在 R 中看到的消息最常见的地方是在包的开头。使用suppressMessages 可以很容易地抑制一个函数的消息价值,如下所述:Disable Messages Upon Loading Package in R。也可以通过在supressMesssages 函数调用中嵌入{} 来抑制多行消息生成函数调用。但是,如果您有一个完整的脚本,其中到处都有消息,那么是否可以完全禁用它们?我正在寻找类似 option(warn=-1) 但用于消息的东西。请注意,sink 并不能完全满足我的要求,因为它会重定向所有输出...我想保留来自 print 的输出,但不保留来自 message 的输出。

【问题讨论】:

    标签: r


    【解决方案1】:

    在sink中使用类型参数

    # Open a file to send messages to
    zz <- file("messages.Rout", open = "wt")
    # Divert messages to that file
    sink(zz, type = "message")
    message("not gonna show up in console")
    

    【讨论】:

    • 如何让sink() 再次停止?我需要的是在运行单元测试时抑制警告和消息,然后再将它们打开。警告和消息的红色输出使得很难在控制台中发现错误。基本上,我想要相当于使用option(warn=-1); CODE; option(warn=0)。另一种想法是将我所有的单元测试嵌入suppressMessages()
    • @Deleet 如果您输入sink(),它将结束前一个接收器。
    • @russellpierce 在执行@Dason 提供的代码后调用sink() 不会为我将消息返回到控制台。我已经在单独的帖子中描述了这个问题:stackoverflow.com/questions/45948882/…
    • @russellpierce 实际上,找到了答案。您需要致电sink(type="message"),而不仅仅是sink()。查看我链接的 SO 帖子中接受的答案以获取更多详细信息。
    猜你喜欢
    • 2011-12-05
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2015-04-04
    • 2018-01-28
    相关资源
    最近更新 更多