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

Joris Meys jorismeys at gmail.com
Fri Feb 24 16:55:55 CET 2012


Maybe I should rephrase:

As mentioned by Martin, by you and by TFM (which I read),
unloadNamespaces does not remove registered S3 methods. I got the
message before. As to why it has to be this way, the people that WTFM
didn't really add much information to TFM for those who RTFM (nor do
they have to). I merely wondered why it had to be that way out of
interest, but maybe formulated my question in a less clear and more
offensive way.

So:

Given the fact that S3 methods are not removed by unloading a namespace:

 - What is the reason for this, as I would naively assume removing
them when unloading a namespace seems more useful?
 - How do you remove them without having to restart R?

Sincerely,
Joris

2012/2/24 Prof Brian Ripley <ripley at stats.ox.ac.uk>:
> fortunes::fortune('WTFM') applies.  As already pointed out, ?detach says
>
>     If a package has a namespace, detaching it does not by default
>     unload the namespace (and may not even with ‘unload=TRUE’), and
>     detaching will not in general unload any dynamically loaded
>     compiled code (DLLs).  Further, registered S3 methods from the
>     namespace will not be removed.  If you use ‘library’ on a package
>     whose namespace is loaded, it attaches the exports of the already
>     loaded namespace.  So detaching and re-attaching a package may not
>     refresh some or all components of the package, and is inadvisable.
>
> And that is explicitly mentioned on ?unloadNamespace ....
>
>
> On Fri, 24 Feb 2012, Joris Meys wrote:
>
>> 2012/2/24 Prof Brian Ripley <ripley at stats.ox.ac.uk>:
>>>
>>>
>>> As
>>>
>>> getS3method('print', 'object_size')
>>>
>>> would have confirmed the expectations of a 'one' with a less sketchy
>>> understanding of R.
>>>
>> Yes, getS3method() sends you -not very surprisingly- to the one from
>> gdata. I realized, as print(object.size(iris)) gets that one as well,
>> and even in my sketchy understanding of R I suspect that both actions
>> have a similar underlying mechanism. But that's not my point.
>>
>> Why would I have to expect the gdata version is still used (under the
>> correct assumption that I haven't been writing on the R source code
>> myself)? As a maybe-not-so-smart basic user of R, I would expect that
>> detach() and eventually unloadNamespace() would revert the effect of
>> library() (and loadNamespace() ). Apparently they don't.
>>
>> The only way to reverse the action of require(gdata) seems to be to
>> restart R. That's at least what my limited brain could understand from
>> the valuable information given by both you and Martin. Seemingly
>> having to restart an application to undo an action, even in the
>> presence of functions with names that make you believe they revert a
>> former action, might in general be conceived as rather unexpected by
>> somebody with the same sketchy understanding of R as me. I would be
>> delighted if you could explain to me which part of R I understand
>> wrongly to come to this silly observation.
>
>
>>
>> Sincerely,
>> Joris
>>
>>
>>
>> --
>> 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
>>
>
> --
> 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



-- 
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