[Rd] function remains loaded in the search space after detaching the package

Joris Meys jorismeys at gmail.com
Fri Feb 24 12:26:06 CET 2012


Aaargh... I should RTFM more closely.  Thanks for pointing this out.

On Fri, Feb 24, 2012 at 12:20 PM, Martin Maechler
<maechler at stat.math.ethz.ch> wrote:
>>>>>> Joris Meys <jorismeys at gmail.com>
>>>>>>     on Fri, 24 Feb 2012 11:24:35 +0100 writes:
>
>    > I ran into some very irritating behaviour I don't
>    > understand.  Let me illustrate with the package gdata()
>    > and the function print.object_size() :
>
>    >> print(object.size(iris),units='Kb')
>    > 6.3 Kb
>    >> getAnywhere(print.object_size)
>    > A single object matching ‘print.object_size’ was found It
>    > was found in the following places registered S3 method for
>    > print from namespace utils namespace:utils with value ...
>
>    > All is well. So now I load gdata
>
>    >> require(gdata)
>    > Loading required package: gdata ...  The following
>    > object(s) are masked from ‘package:utils’:
>
>    >     object.size
>
>    > OK, this is what I would expect:
>
>    >> print(object.size(iris),units='Kb')
>    > [1] 6424
>    >> getAnywhere(print.object_size)
>    > 2 differing objects matching ‘print.object_size’ were
>    > found in the following places registered S3 method for
>    > print from namespace utils namespace:gdata namespace:utils
>    > Use [] to view one of them
>
>    > Now I detach gdata again
>
>    >> detach(package:gdata)
>
>    > But the function print.object_size is still the default
>    > for object_size objects!
>
>    >> print(object.size(iris),units='Kb')
>    > [1] 6424
>
>    > And it can still be found as well:
>
>    >> getAnywhere(print.object_size)
>    > 2 differing objects matching ‘print.object_size’ were
>    > found in the following places registered S3 method for
>    > print from namespace utils namespace:gdata namespace:utils
>    > Use [] to view one of them
>
>    > Am I missing something?
>
> Yes:  the argument  'unload'   of detach().
>
> In general: Now that every package has a namespace,
> you (and others) should learn the difference between
> attaching and loading - and hence  detach()ing and unloading
> a package with its namespace.
>
>  ?detach
>  ?library
>
> etc should give a good start.
>
> Martin Maechler, ETH Zurich



-- 
Joris Meys
Statistical consultant

Ghent University
Faculty of Bioscience Engineering
Department of Mathematical Modelling, Statistics and Bio-Informatics

tel : +32 9 264 59 87
Joris.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php



More information about the R-devel mailing list