17

假设我有一个 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 没有做任何事情,我找不到任何有用的信息。

4

5 回答 5

22

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

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

与运行

Rscript foo.R args1 args2 ...

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

于 2013-07-22T20:34:03.837 回答
2

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

从链接的问题:

如果您只想获取输出(而不是命令),请指定print.eval参数集。TRUE如果您也需要这些命令,则应设置echoTRUE(这意味着设置print.evalTRUE)。

例如:

source('myscript.R', print.eval = TRUE)
于 2013-07-22T20:29:57.347 回答
2
source( 'path/name/filnam.R' , verbose=FALSE)
于 2013-07-22T22:56:22.517 回答
1

直接在终端运行:

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 &

另请参阅此参考

于 2016-09-16T23:46:36.197 回答
1

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

Ctrl+Shift+Enter键运行带有回显的整个脚本(详细)

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

于 2017-11-16T17:43:50.857 回答