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?
An R script is simply a text file containing (almost) the same commands that you would enter on the command line of R. ( almost) refers to the fact that if you are using sink() to send the output to a file, you will have to enclose some commands in print() to get the same output as on the command line.
An R script is just a plain text file that you save R code in. You can open an R script in RStudio by going to File > New File > R script in the menu bar. RStudio will then open a fresh script above your console pane, as shown in Figure 1-7.
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With