silent option for library function

Kurt Hornik
Wed, 30 Oct 2002 17:25:55 +0100

>>>>> Vincent J Carey, writes:

> would it be possible to add an option to library that
> prevents messages except when there are errors?  as
> we build Sweave documents illustrating package functionalities
> it is sometimes desirable to attach a package "behind
> the scenes".  packages that have messages emitted
> in .First.lib (often describing version or developer)
> frustrate this particular desire.  verbose=FALSE
> does not accomplish this.

> note that i have no objection to messages produced by
> default use of library.  i just want the ability to
> suppress them when there are no errors.  currently
> it is possible to do

> sink(file="/dev/null")
> library([e.g. affy])
> sink()

> but that may suppress too much -- an error message may be
> lost.

The QA tools use the following:

.loadPackageQuietly <- function(package, lib.loc) {
    ## Load (reload if already loaded) @code{package} from
    ## @code{lib.loc}, capturing all output and messages.  All QA
    ## functions use this for loading packages because R CMD check
    ## interprets all output as indicating a problem.
    outConn <- textConnection("out", "w")
    sink(outConn, type = "output")
    sink(outConn, type = "message")
    yy <- try({
        pos <- match(paste("package", package, sep = ":"), search())
            detach(pos = pos)
        library(package, lib.loc = lib.loc, character.only = TRUE,
                verbose = FALSE)
    if(inherits(yy, "try-error"))
    sink(type = "message")
    sink(type = "output")


r-devel mailing list -- Read
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: