silent option for library function

Kurt Hornik Kurt.Hornik@wu-wien.ac.at
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())
        if(!is.na(pos))
            detach(pos = pos)
        library(package, lib.loc = lib.loc, character.only = TRUE,
                verbose = FALSE)
    })
    if(inherits(yy, "try-error"))
        stop(yy)
    sink(type = "message")
    sink(type = "output")
    close(outConn)
}

-k

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._