使用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"