[Rd] function remains loaded in the search space after detaching the package
Uwe Ligges
ligges at statistik.tu-dortmund.de
Fri Feb 24 17:08:59 CET 2012
On 24.02.2012 16:55, Joris Meys wrote:
> 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?
Because there are no mechanisms implemented that keep the old
information, i.e. before things got registered.
> - How do you remove them without having to restart R?
That is not possible.
Uwe Ligges
> 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
>
>
>
More information about the R-devel
mailing list