Possible Duplicate:
R suppress startupMessages from dependency
I've read about using sink("NUL")
/ sink("/dev/null")
, but neither of them has fixed the problem I'm having. Even if I wrap the library()
commands in sink("NUL")
and sink()
, my call to Rscript outputs all manner of information I don't want to see:
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
The stuff at the end is the only output I actually want, and also the only output I seem able to suppress with sink()
commands. It really seems like there should just be an argument to Rscript
that suppresses this output (which doesn't even show up if I source
my script in the console)... any input?
Andrew, I ran into the same thing and suppressMessages()
didn't remove all the extra output, but using sink()
in the form of capture.output()
wrapped around the suppressMessages()
works.
$ 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) ) )'
What is going on when loading the Rmpfr package is several well behaved startup messages written using the message
connection along with a not so nice message using the output
connection. Sure, you could create and manipulate a sink()
on your own, but that is what capture.output()
is already setup to do.
Perhaps setting a verbose arg to get a little more control would be helpful::
$ cat sample.R
#!/c/opt/R/R-2.15.0/bin/rscript --vanilla
cmd_args <- commandArgs( TRUE );
if( length( cmd_args ) > 0 ) {
eval( parse( text = cmd_args[1] ) )
}
if( exists( "verbose" ) ) {
library( Rmpfr )
} else {
msg.trap <- capture.output( suppressMessages( library( Rmpfr ) ) )
}
print("Hello")
Which yields::
$ ./sample.R
[1] "Hello"
$ ./sample.R "verbose=TRUE"
Loading required package: methods
Loading required package: gmp
Attaching package: 'gmp'
---->8----
[1] "Hello"
Lots of stuff you could play around with there, but at least you can see how to totally suppress the msg output.
Hope it helps. Have fun!