使用Rscript,有没有合适的方法来抑制非脚本输出?

使用Rscript,有没有合适的方法来抑制非脚本输出?,r,rscript,R,Rscript,可能重复: 我读过关于使用sink(“NUL”)/sink(“/dev/null”),但他们都没有解决我遇到的问题。即使我将library()命令包装在sink(“NUL”)和sink()中,我对Rscript的调用也会输出我不想看到的所有信息: Loading required package: Matrix Loading required package: methods Loading required package: lattice Loaded glmnet 1.8 Loadi

可能重复:

我读过关于使用
sink(“NUL”)
/
sink(“/dev/null”)
,但他们都没有解决我遇到的问题。即使我将
library()
命令包装在
sink(“NUL”)
sink()
中,我对Rscript的调用也会输出我不想看到的所有信息:

Loading required package: Matrix
Loading required package: methods
Loading required package: lattice
Loaded glmnet 1.8

Loading required package: MASS
Loading required package: lme4

Attaching package: 'lme4'

The following object(s) are masked from 'package:stats':

    AIC, BIC

Loading required package: R2WinBUGS
Loading required package: coda

Attaching package: 'coda'

The following object(s) are masked from 'package:lme4':

    HPDinterval

Loading required package: abind
Loading required package: foreign

arm (Version 1.5-05, built: 2012-6-6)

Working directory is C:/Users/andrews/bootstraps/user/_branches/ER-PoC/Bootstraps/R


Attaching package: 'arm'

The following object(s) are masked from 'package:coda':

    traceplot

[1] "client=51"         "date='01-01-2011'"
[1] "01-01-2011"
[1] 51

最后的内容是我真正想要的唯一输出,也是我似乎能够用
sink()
命令抑制的唯一输出。看起来应该只有
Rscript
的一个参数来抑制这个输出(如果我
source
我的脚本在控制台中,它甚至不会显示出来)。。。有任何输入吗?

安德鲁,我遇到了同样的事情,
suppressMessages()
没有删除所有额外的输出,而是使用
sink()
的形式,即
capture.output()
包装在
suppressMessages()

$ rscript --vanilla -e 'library(Rmpfr)'
Loading required package: methods
Loading required package: gmp
---->8----
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb
---->8----


$ rscript --vanilla -e 'suppressMessages( library(Rmpfr) )'
Loading C code of R package 'Rmpfr': GMP using 32 bits per limb


$ rscript --vanilla -e 'msg.out <- capture.output( suppressMessages( library(Rmpfr) ) )'
结果是:

$ ./sample.R
[1] "Hello"


$ ./sample.R "verbose=TRUE"
Loading required package: methods
Loading required package: gmp

Attaching package: 'gmp'
---->8----
[1] "Hello"
你可以在那里玩很多东西,但至少你可以看到如何完全抑制msg输出


希望能有帮助。玩得开心

也许
?suppressPackageStartupMessages
会有所帮助?只是想在作为重复结束时提及,此问题是关于脚本的问题,并被标记为以包的形式发言的问题的重复项。因此Joris的“静默”名称空间方法甚至不会被使用,
suppressMessages()
在按OP所述使用时不会进行完全抑制。因此,“精确复制”对该用户都没有帮助。谢谢,@Thell。当我问这个问题的时候,我已经读了这篇文章,所以我很高兴你同意。看起来这将是一个解决方案。我应该补充的是,我的主脚本从另外四个脚本开始,并且
library()
语句都在这些辅助脚本中。即便如此,将
source()
调用包装在
capture.output(suppressMessages())
中几乎可以正常工作。。。现在,对于所需输出之前的每个
source()
调用,我只有一行输出
character(0)
。知道那可能是什么吗?不管怎样,非常感谢!这就是:只需使用
suppressMessages()
而不使用
capture.output()
就可以解决整个问题。再次感谢!您收到
字符(0)
的原因是您没有将捕获的输出分配给任何对象,因此它被打印,并且在您的特定情况下,整个消息已经被抑制。请注意,
suppressMessages()
本身并不总是给您留下一个空字符数组;与上面的第二个示例命令一样,其中Rmpfr即使在使用
suppressMessages()
之后也会发出初始化消息。
$ ./sample.R
[1] "Hello"


$ ./sample.R "verbose=TRUE"
Loading required package: methods
Loading required package: gmp

Attaching package: 'gmp'
---->8----
[1] "Hello"