Rscript 如何进入无声模式?

9

我正在使用Rscript运行一个R脚本,但是屏幕上输出了很多内容。我能以静默模式运行Rscript吗(即不产生任何屏幕输出)?


你使用的操作系统是什么? - damienfrancois
我知道Octave可以使用--quiet选项调用。我想知道R中是否有类似的选项。 - averageman
当然可以,尝试使用 R --help,但这只会影响到 R 本身。不过还有一个选项 --slave.... - Dirk Eddelbuettel
3个回答

15

有几个选项:

  1. 在R内部:使用 sink() 将输出重定向到文件,请参见 help(sink)

  2. 在shell上: Rscript myscript.R 2>&1 >/dev/null

  3. 编辑代码 :)

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

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


1
有趣。我尝试了你的选项,它们多多少少都起作用了。但是有些东西仍然没有被隐藏。我正在使用Amelia II包,即使使用sink和/或2>&1 >/dev/null,它的信息(如版本和版权)仍然显示出来... - averageman
1
请随意接受或点赞。包启动消息是不同的,这里有一些问题解释了细节,请参见例如这个其他SO问题。您可以通过在library()调用周围包装suppressPackageStartupMessages()来消除它们;我经常只使用suppressMessages() - Dirk Eddelbuettel
选项2的输出重定向被反转了,请参见此处。如果您使用Rscript -e“library(tidyverse)”2>&1> /dev/null进行测试,则仍会看到输出,但是使用Rscript -e“library(tidyverse)”> /dev/null 2>&1可以将其全部静音。 - pgcudahy

6
您可以使用“重定向”命令来更改输出位置。
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,因为我期望从命令行中获取一些参数... - averageman

0
一个更多的选项:如果你想将输出和错误消息分别保存到不同的文件中,这样更容易识别问题,你可以在命令行中使用以下命令:
Rscript myscript.R >a.Rout 2>a.Rerr

这将把程序输出写入a.Rout文件,错误消息写入a.Rerr文件。请注意,在此之前应该先删除a.Rout和a.Rerr文件,以避免出现错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接