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? Is it reasonable to expect library to pass verbose along? I'm running R 1.9 on debian. -- Frank E Harrell Jr Professor and Chair School of Medicine Department of Biostatistics Vanderbilt University
On Sun, 11 Jul 2004, 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? Is it reasonable > to expect library to pass verbose along? I'm running R 1.9 on debian.No. It is not documented to, and .First.lib (in R or S) has only two documented arguments so it would not be possible to do this in a backwards-compatible way. (If we passed ... along, then using library(foo, verbose=FALSE) would fail for almost all packages foo with a .First.lib function.) We normally suggest that such options are handled by setting an environment variable or perhaps an option (e.g. option(Hmisc.verbose = FALSE)). -- Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
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). 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. 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 ... Simon