【问题标题】:Rscript in silent mode静默模式下的 Rscript
【发布时间】:2014-09-28 07:35:40
【问题描述】:

我正在使用 Rscript 运行 R 脚本,但我的屏幕上有很多输出。我可以在静默模式下运行 Rscript(即没有任何屏幕输出)吗?

【问题讨论】:

  • 你使用的是什么操作系统?
  • 我知道可以使用 --quiet 选项调用 Octave。我想知道R中是否有类似的东西。
  • 当然可以,试试R --help,但这只会影响R本身。但也有--slave ....

标签: r rscript


【解决方案1】:

另一种选择:如果你想将输出和错误信息分开到不同的文件中,这样更容易识别问题,你可以使用shell上的命令:

Rscript myscript.R >a.Rout 2>a.Rerr

这会将程序输出写入 a.Rout 并将错误消息写入 a.Rerr。注意 a.Rout 和 a.Rerr 的文件要提前删除,以免出错。

【讨论】:

    【解决方案2】:

    您可以使用

    重定向输出
    Rscript myscript.R >& >/dev/null (linux)
    

    Rscript myscript.R >$null (windows)
    

    或直接使用R

    R --quiet --vanilla < myscript.R
    

    R CMD BATCH myscript.R
    

    (最后一个版本将输出写入文件myscript.Rout

    【讨论】:

    • 我认为我不能直接使用 R,因为我期待命令行中的一些参数...
    【解决方案3】:

    我想到了几个选项:

    1. 在 R 内:使用 sink() 将输出转移到文件,请参阅 help(sink)

    2. 在外壳上:Rscript myscript.R 2&gt;&amp;1 &gt;/dev/null

    3. 编辑代码:)

    4. 在 Linux 上,使用我们的 littler 前端,因为它默认以 --slave 模式运行 :)

    选项 3 涉及最多,但可能是最好的。您可以使用日志记录方案,在“调试”或“详细”中打印/显示,但不能以其他方式打印/显示。我经常这样做,基于给脚本的命令行切换。

    【讨论】:

    • 有趣。我尝试了您的选择,它们或多或少都有效。不过有些事情并没有隐藏。我正在使用 Amelia II 软件包,即使在使用 sink 和/或 2>&1 >/dev/null...
    • 欢迎接受或投票。包启动消息不同,这里有一些问题解释细节,见例如this other SO question。您可以通过将suppressPackageStartupMessages() 包裹在您的library() 电话周围来对它们进行核对;我经常只使用suppressMessages()
    • 选项 2 将输出重定向反转,see here。如果您使用Rscript -e "library(tidyverse)" 2&gt;&amp;1&gt; /dev/null 进行测试,您仍然会看到输出,但使用Rscript -e "library(tidyverse)" &gt; /dev/null 2&gt;&amp;1 会完全静音
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2017-05-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多