[R] Loading a "sub-package"

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Oct 29 11:37:48 CET 2003


Short answers: 

Setting R_DEFAULT_PACKAGES changes the startup packages, as ?Startup says.

You should not need methods unless you are using S4 classes yourself, as 
any package you might use that needs it is supposed to load it.  Methods 
adds a considerable overhead to R's startup time and footprint.
I am not advocating doing this unless you are worried about space.

The code in MASS you never use should be paged out, but the planned change 
would be rather to never load it unless it had been used.

On Wed, 29 Oct 2003 Ted.Harding at nessie.mcc.ac.uk wrote:

> On 28-Oct-03 Prof Brian Ripley wrote:
> > On Tue, 28 Oct 2003 Ted.Harding at nessie.mcc.ac.uk wrote:
> > 
> >> But MASS is huge! Hence the query. (I've also had occasion to filch
> >> single functions from other libraries as well).
> > 
> > MASS is *not* huge, and indeed is negligible compared to what is
> > already loaded.  nlme might be large, but few packages are noticeable
> > and none are huge ....
> 
> Sorry! I didn't want to give an impression of making derogatory remarks
> about MASS (or any other library), and admittedly it is a small fraction
> of the size of nlme.
> 
> However, loading MASS seems to increase R's footprint in RAM by about
> 800KB (as reported by 'ps'), a substantial fraction of what's still
> free when I'm working on my 128MB laptop, and (from another point of
> view) this is indeed huge compared with the 600 bytes or so required
> to define 'mvrnorm' on its own; and is a not-negligible bite out of
> available RAM! (As I said before, I in fact simply pinched the code
> stand-alone for this particular function, but it did prompt the
> general query for cases where this might not be so straightforward).
> 
> > Luke and I (but principally Luke) have been experimenting with 
> > load-on-demand for R objects, and indeed MASS already does that for
> > its data objects.  It's possible that this will be a non-issue by
> > the next non-patch release.
> 
> This will be welcome, and many thanks for the effort! Does this mean
> that it would be possible to do something like
> 
>   load.function(mvrnorm,package=MASS)
> 
> and get just that function (and, in the case of some functions, any
> other functions they may depend on)?
> 
> > Some data (R 1.8.0 --vanilla)
> > 
> >> gc()
> >          used (Mb) gc trigger (Mb)
> > Ncells 416460 11.2     597831   16
> > Vcells 113224  0.9     786432    6
> >> library(MASS)
> >> gc()
> >          used (Mb) gc trigger (Mb)
> > Ncells 463337 12.4     667722 17.9
> > Vcells 121995  1.0     786432  6.0
> > 
> > I'd fail any student who said `MASS was huge'.
> 
> Thankfully I do not anticipate taking any more examinations ... :)
> 
> > I assume you don't have methods loaded if you are concerned about 
> > performance ....
> 
> An interesting question ... to which I have to answer "yes, I think
> I do": for the reason it seems to be loaded by default[1] and my reading
> of ?Methods has given me the impression (I don't understand R's workings
> to the point where I feel I _know_ anything about this for sure) that a
> lot of things one takes for granted in normal use of R would not work as
> expected without it. For instance:
> 
>      The R package 'methods' implements, with a few exceptions, the
>      programming interface for classes and methods in the book
>      _Programming with Data_ (John M. Chambers, Springer, 1998), in
>      particular sections 1.6, 2.7, 2.8, and chapters 7 and 8.
> 
> [1] At any rate, things listed by library(help=methods) are known
>     to R on startup.
> 
> So another interesting question in turn: What would be the effect on
> general use of setting up R start-up so that "methods" was not loaded
> by default? And, indeed, how might this be done? (I can't find where
> the default loading of "methods" is initiated).


-- 
Brian D. Ripley,                  ripley at 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




More information about the R-help mailing list