[Rd] function remains loaded in the search space after detaching the package
Martin Maechler
maechler at stat.math.ethz.ch
Fri Feb 24 12:20:15 CET 2012
>>>>> 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
More information about the R-devel
mailing list