如何避免每次运行 R 脚本时都打印它?

How can I avoid having my R script printed every time I run it?

提问人:John Doucette 提问时间:7/23/2013 最后编辑:Ari B. FriedmanJohn Doucette 更新时间:1/29/2019 访问量:10592

问:

假设我有一个 R 脚本:

library('nnet')    
something <- runif(50); 
print(something) 

当我从命令行运行此脚本时,它会打印:

> library('nnet')
> something <- runif(5); 
> print(something)
 [1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019

我只想打印:

[1] 0.04665518 0.93574275 0.96387299 0.07410239 0.92834019

我不知道该怎么做。sink(“/dev/null”) 不做任何事情,手动重定向 stderr 也不做任何事情,我找不到任何有用的信息。

R-常见问题

评论

5赞 Joshua Ulrich 7/23/2013
您如何“在命令行”运行它? 只打印你想要的东西...Rscript foo.R
4赞 Gavin Simpson 7/23/2013
在 R 中,除非您通过 .请向我们确切地展示您正在尝试/做什么。source("foo.R")source("foo.R", echo = TRUE)
1赞 John Doucette 7/23/2013
Rscript 似乎是我所缺少的。SE 和其他地方的其他帖子运行带有“R < foo.R“,这显然不是这样做的方法。谢谢。

答:

2赞 Ben J. Boyle 7/23/2013 #1

我自己不是 R 用户,但这可能对您有所帮助吗?如何在不抑制输出的情况下运行“R”脚本?

从链接的问题:

如果只想获取输出(而不是命令),请指定 Parameter Set。如果您也需要这些命令,则应设置为 (这意味着设置为 )。print.evalTRUEechoTRUEprint.evalTRUE

例如:

source('myscript.R', print.eval = TRUE)
22赞 John Doucette 7/23/2013 #2

解决方法是使用 Rscript,而不是使用 R.其他地方的示例(例如,如何从 R 脚本中读取命令行参数?),从命令行运行脚本

R --args args1 args2... < foo.R

跑步方式

Rscript foo.R args1 args2 ...

只生成输出,而不生成脚本。这也是一种更简洁的脚本运行方式。

评论

1赞 Gavin Simpson 7/23/2013
+1 次要的一点,“做得不好”是不必要的。R并不总是有&你链接到的Q&A现在已经超过3年了。我怀疑当时的用法还没有嵌入到许多 R 用户的心理中。还要注意的是,这些例子并没有回答你的问题——你不希望你的脚本被回应,这是另一回事,批评缺乏预知技能是错误的。RScriptRScript
1赞 John Doucette 7/23/2013
@GavinSimpson 公平点。我已经相应地更新了答案。
3赞 Gavin Simpson 7/23/2013
@JohnDoucette优秀的约翰。我希望 Stack Overflowr 标签上的更多用户像您今天一样具有公民意识。
0赞 mpettis 4/4/2017
不确定这是否是单独的问题:当我想为 Rscript 打开源代码回显(如 bash 中的“set -x”)时,我被引导到这里——我猜这样做的方法只是运行 ,除非有其他解决方案。<srcfile.R R --vanilla
2赞 IRTFM 7/23/2013 #3
source( 'path/name/filnam.R' , verbose=FALSE)
2赞 Good Will 9/17/2016 #4

对于直接在终端中运行:

R --slave --args dense 12 0.98 < foo.R

要从 Python 运行 R 脚本:

process = subprocess.Popen(["R --slave --args %s %d %.2f < /path/to/your/rscript/foo.R" % (, 12, 0.98) ], shell=True)
process.wait()

为了在终端/命令行和后台运行R脚本,同时禁止/避免打印脚本的每一行和程序的输出,使用R CMD BATCH,如下所示:

R CMD BATCH--slave foo.R 2>&1  foo.out &

另请参阅此参考资料

2赞 M.A. Khan 11/17/2017 #5

对于 Windows 中的 RStudio IDE(版本 1.1.383):

Ctrl+Shift+Enter 键,使用 echo(详细)运行整个脚本

Ctrl+Shift+S 键运行整个脚本,不带回显(非详细)

评论

0赞 jorvaor 4/27/2023
投了赞成票,因为我正在寻找 Ctrl+Shift+S 快捷键。但是,至少对于 RStudio 版本 2022.07.0,使用 echo 运行整个脚本的快捷方式是 Ctrl+Alt+R。快捷键 Ctrl+Shift+Enter 仅运行当前块。