Disable messages upon loading a package

60,285

Solution 1

Just use suppressMessages() around your library() call:

edd@max:~$ R

R version 2.14.1 (2011-12-22)
Copyright (C) 2011 The R Foundation for Statistical Computing
ISBN 3-900051-07-0
Platform: x86_64-pc-linux-gnu (64-bit)
[...]

R> suppressMessages(library(ROCR))
R>                                               # silently loaded
R> search() 
 [1] ".GlobalEnv"         "package:ROCR"         # it's really there      
 [3] "package:gplots"     "package:KernSmooth"
 [5] "package:grid"       "package:caTools"   
 [7] "package:bitops"     "package:gdata"     
 [9] "package:gtools"     "package:stats"     
[11] "package:graphics"   "package:grDevices" 
[13] "package:utils"      "package:datasets"  
[15] "package:methods"    "Autoloads"         
[17] "package:base"      
R> 

Solution 2

Dirk's answer suppresses all messages and is not specific to messages that is generated while loading packages.

The more accurate solution to the asked question is:

suppressPackageStartupMessages(library(THE_PACKAGE_NAME))

A bit more detailed explanation can be found here

Solution 3

Use suppressPackageStartupMessages, see the answer by MehradMahmoudian. For completeness, adding here examples of usage:

For one library, use suppressPackageStartupMessages(...), for example:

suppressPackageStartupMessages(library(ggplot2))

For multiple libraries, use suppressPackageStartupMessages({...}), for example:

suppressPackageStartupMessages({
    library(ggplot2)
    library(ggdendro)
})

SEE ALSO:
Suppress package startup messages

Solution 4

library(ROCR, quietly = TRUE) might be a more elegant option.

Solution 5

By adding quietly = T as shown below will solve the issue:

suppressWarnings(suppressMessages(library("dplyr", quietly = T)))

In case of multiple package you can use :

## specify the package names
PKGs <- c("affy","gcrma","readxl","ggplot2","lattice" )

and them use lapply as below:

lapply(PKGs, library, character.only = TRUE ,quietly = T)
Share:
60,285

Related videos on Youtube

learner
Author by

learner

Updated on April 27, 2022

Comments

  • learner
    learner about 2 years

    I have a package in R (ROCR) that I need to load in my R environment. Upon loading the package, a set of messages are printed. This is ordinarily fine, but since the output of my R script is being used for further analysis I want to completely disable all of this output. How do I do that? Furthermore, I'd prefer to do it without having to modify ROCR at all, so that future users of this script don't have to do that either.

    So far:

    • sink() doesn't work here - redirecting both stdout and std err to /dev/null does nothing for me.
    • Unsurprisingly, options(warnings=-1) does nothing either, since these are not warnings, per se, being printed.

    Any thoughts?

    • Admin
      Admin over 12 years
      What messages are being printed?
    • learner
      learner over 12 years
      While the entire output is unnecessary, the first several lines are: Loading required package: gplots Loading required package: gtools Loading required package: gdata - Note that it won't let me format the message correctly.
    • Admin
      Admin over 12 years
      Then load gplots, gtools, and gdata before loading ROCR.
    • Dirk Eddelbuettel
      Dirk Eddelbuettel over 12 years
      @Jack, nope, see my answer below for the proper fix.
    • Admin
      Admin over 12 years
      @DirkEddelbuettel - That works too. TIMTOWTDI.
    • Dirk Eddelbuettel
      Dirk Eddelbuettel over 12 years
      No Jack, not really. suppressMessages() also suppresses noisy textual message, at least from packages that conform, and protects you against other packages adding new dependencies which you'd need to reflect manually.
    • Spacedman
      Spacedman over 12 years
      Obligatory "its a package, not a library" comment here
  • hadley
    hadley over 12 years
    Aren't you supposed to use suppressPackageStartupMessages?
  • Dirk Eddelbuettel
    Dirk Eddelbuettel over 12 years
    No net gain apart from spending X more characters. Plus suppressPackageStartupMessages suppresses only startup messages where as my preferred suppressMessages() suppresses any and all messages (but not cat() as I recall). But one is not supposed to use that in startup text.
  • Matt Bannert
    Matt Bannert about 8 years
    It's also great that Dirk's suggestion suppress messages from depending packages as well when they're being loaded.
  • Adrian
    Adrian over 7 years
    Is there a way to capture those startup messages? I can capture warnings and errors, but don't know how to capture other such messages.
  • Gaurav Singhal
    Gaurav Singhal almost 6 years
    not really, try library(data.table, quietly = TRUE)
  • jangorecki
    jangorecki about 5 years
    @Adrian yes there is, wrap into tryCatch and provide message handler
  • PatrickT
    PatrickT about 2 years
    neither quietly=TRUE nor verbose=FALSE suppress the messages.