From edd at debian.org  Sun Jul 11 20:09:41 2004
From: edd at debian.org (Dirk Eddelbuettel)
Date: Sun Jul 11 20:10:25 2004
Subject: [Rd] library( ) and verbose=
In-Reply-To: <D6389012-D345-11D8-BE4D-000A959F327E@math.uni-augsburg.de>
References: <40F11F54.5070505@vanderbilt.edu>
	<D6389012-D345-11D8-BE4D-000A959F327E@math.uni-augsburg.de>
Message-ID: <20040711180941.GA1455@sonny.eddelbuettel.com>

On Sun, Jul 11, 2004 at 04:23:10PM +0200, Simon Urbanek wrote:
> On Jul 11, 2004, at 1:07 PM, Frank E Harrell Jr wrote:
> 
> >The Hmisc package has in its .First.lib function a verbose argument,
> >which I thought was the way to allow users to suppress certain 
> >messages,
> >by issuing library(Hmisc, verbose=FALSE).  But I see that library( )
> >does not pass verbose to .First.lib.  The default for verbose in Hmisc
> >is TRUE because .First.lib prints some important information about
> >masked functions.  What is the best way to fix this?
> 
> AFAIR the official way to suppress unwanted messages is 
> warn.conflicts=FALSE so the user probably wants to issue
> library(Hmisc, warn.conflicts=FALSE).

Not bad, but note that Hmisc has a very explicit

    .First.lib <- function(lib, pkg, verbose=TRUE, ...) {
      if(verbose)
          cat("Hmisc library by Frank E Harrell Jr\n\n",
              "Type library(help='Hmisc'), ?Overview, or ?Hmisc.Overview')\n",
	      [...]     
	      
so the additional option() Brian suggested way indeed be the best way.	      

> As of 'verbose' - it is not by default TRUE - it's actually determined 
> by the current "verbose" option, so users can actually change the 
> default as desired.

I tried that several different ways before I brought this to Frank's
attention. No method worked; I ended up altering the R code in the installed
package to set the verbose=FALSE in the snipped shown above.

> On the other hand .First.lib takes only two, fixed arguments, so AFAIK 
> you cannot pass any additional arguments from outside (I believe this 
> applies to .onLoad and friends, too).
> In fact I'm not quite sure what you want to "fix" here .. is it the 
> wish in general to be able to pass arguments to packages while being 
> loaded? In your specific case I'd say you don't need that since you 
> have always access to the 'verbose' option ...

Quite so.

Dirk

-- 
Those are my principles, and if you don't like them... well, I have others.
                                                -- Groucho Marx


[Rd] library( ) and verbose=
Dirk Eddelbuettel