On 21 Feb 2003 at 18:06, [EMAIL PROTECTED] wrote: The problem which surprised Brian Ripley (the search list being changed by a package without the package giving information) occurs also with recommended packages:
(This is R1.6.2) > search() [1] ".GlobalEnv" "package:ctest" "Autoloads" "package:base" > library(nlme) Loading required package: nls Loading required package: lattice > search() [1] ".GlobalEnv" "package:mva" "package:lattice" "package:grid" [5] "package:nlme" "package:nls" "package:ctest" "Autoloads" [9] "package:base" mva and grid has been loaded without any warning. Everybody knows lattice requires grid, but why mva? Restarting R: > search() [1] ".GlobalEnv" "package:ctest" "Autoloads" "package:base" > library(grid) > search() [1] ".GlobalEnv" "package:grid" "package:ctest" "Autoloads" [5] "package:base" > library(lattice) > search() [1] ".GlobalEnv" "package:lattice" "package:grid" "package:ctest" [5] "Autoloads" "package:base" > library(nls) > search() [1] ".GlobalEnv" "package:nls" "package:lattice" "package:grid" [5] "package:ctest" "Autoloads" "package:base" > library(nlme) > search() [1] ".GlobalEnv" "package:mva" "package:nlme" "package:nls" [5] "package:lattice" "package:grid" "package:ctest" "Autoloads" [9] "package:base" So nlme loads mva without a warning. This did'nt happen before R1.6.0, I beleave. On this theme, I have another question. I have a package which needs another package (SuppDists) for only one function. I do require() within that function only. Is that OK, or should it be done within .First.lib ? Kjetil Halvorsen > There seems to be a widespread assumption that the way for package foo to > require package bar is via `require(bar)'. It isn't! > > That returns a logical which is in the vast majority of cases unchecked. > So if the package is really required, the code will fail without a warning > if the package is unavailable. You may as well call library() and let it > do the checking. (In a few cases you can safely assume that the package > is present, e.g. nnet can require(MASS) since they are installed > together.) > > I find it confusing if require(bar, quietly=TRUE) is used with no message. > If you are going to change the search path, please let the end user know > you have done so. I've had nasty surprises more than once from this by > getting datasets from packages I did not ask to be there. > > Another point: please do not call code with side effects like require, > library or options at the top level in foo/R/foo, but do so within > .First.lib. This becomes important if the code is dumped or put in a > database. > > -- > Brian D. Ripley, [EMAIL PROTECTED] > 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 > > ______________________________________________ > [EMAIL PROTECTED] mailing list > http://www.stat.math.ethz.ch/mailman/listinfo/r-devel ______________________________________________ [EMAIL PROTECTED] mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-devel