[Rd] Wishlist: 'quietly' argument for .onAttach() / .First.lib()

Paul Roebuck roebuck at mdanderson.org
Thu Apr 13 22:06:44 CEST 2006


On Thu, 13 Apr 2006, Liaw, Andy wrote:

> From: Bill Dunlap
> >
> > On Thu, 13 Apr 2006, Prof Brian Ripley wrote:
> >
> > > On Thu, 13 Apr 2006, Peter Ruckdeschel wrote:
> > >
> > > > in "Writing R extensions" as well as in the help
> > > > to .onAttach(), you mention that one could
> > > > use this function to issue a start-up message/banner
> > > > for the package.
> > > >
> > > > My little wish for Easter:
> > > >
> > > > a 'quietly'-type argument for .onAttach() / .First.lib() which is
> > > > passed through by functions
> > > > require() and library() respectively,
> > > > and by means of which one could optionally
> > > > suppress this start-up message/banner .
> > > >
> > > > Is this hard to do?
> > >
> > > I believe so (and think we have been here before).  The documented
> > > call sequence is
> > >
> > >       .onLoad(libname, pkgname)
> > >       .onAttach(libname, pkgname)
> > >
> > > the same as .First.lib.  There is no way to add an argument
> > here, as
> > > many existing packages do not support it.  Beyond that, how
> > would you
> > > pass the argument in?  Namespaces and packages are often
> > > loaded/attached implicitly as a result of loading other packages.
> > >
> > > I did think you could make use of an option to decide
> > whether to the
> > > print the message or not, but I have always assumed that
> > those who did
> > > want a banner probably did not want it suppressed.
> >
> > If the .onAttach() used message() instead of cat()
> > to display the banner message then you could use
> > 	suppressMessages(require("randomForest"))
> > to squelch the message.
>
> Thanks!  This looks like a good alternative.  What do others think of this
> approach?

I used an alternative approach myself. This allows the user
enable/disable the banner text quite easily.

.onAttach <- function(libname, pkgname) {
    if (verbose <- getOption("verbose")) {
        ...
        desc <- packageDescription(pkgname)
        cat(sprintf("%s, version %s", desc$Title, desc$Version), "\n")
        cat(sprintf("Type library(help=%s) to see package documentation",
                    libraryPkgName(pkgname)), "\n")
    }
}

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)



More information about the R-devel mailing list