【问题标题】:How to suppress output如何抑制输出
【发布时间】:2010-03-23 16:54:42
【问题描述】:

当我从命令提示符运行我的 R 脚本时,我想抑制 R 中的输出。

我尝试了许多选项,包括 --slave--vanilla。这些选项减少了输出的文本量。

我还尝试将输出通过管道传输到 NUL,但这没有帮助。

【问题讨论】:

  • 如果> NUL 没有帮助,可能 R 正在打印到 stderr。也可以尝试附加 2>&1

标签: powershell r batch-file


【解决方案1】:

查看help(sink) 即可。在 Unix 上我会这样做

sink("/dev/null")    # now suppresses
....                 # do stuff
sink()               # to undo prior suppression, back to normal now

和 Windows 等价物(给 Johannes 打个招呼)是

sink("NUL")
....
sink()

【讨论】:

  • 通常 Windows 等效项是 NUL。但是,很可能是CreateFile 等。将无法打开它,并且它在很大程度上是 shell 中的特殊功能,可以使其正常工作。
  • 谢谢 - 我相应地编辑了答案(在测试它确实确实以正确引用 NUL 的方式工作之后)。
  • 嗨@DirkEddelbuettel,我注意到这不适用于从 try() 部分转储错误, sink(file="NUL", type="message") 抱怨“NUL”不是一个文件连接,在这种情况下,需要使用 try(stop("error msg"),silent=TRUE) 才能按预期工作。只是想将此添加到您的答案中,以防其他人偶然发现此答案。
  • 那么,除了简单地提供tempfile()之外,是否有一种通用(独立于平台)的方法来实现这一点?
【解决方案2】:

由于 R (>= 3.6.0),there existsDirk Eddelbuettel's answer 的独立于平台的替代方案。只需输入

sink(nullfile())    # suppress output
....                # your code
sink()              # end suppressing output

在 Linux 和 Windows 上禁止输出。

【讨论】:

    猜你喜欢
    • 2014-10-17
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多