On 24/02/2012 11:20, Martin Maechler wrote:
Joris Meys<[email protected]> 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.
A very good point, but actually there is more to this one. 'gdata' registers an S3 method which overwrites the one from utils. Unloading a namespace does not unregister its methods (and registration has no stack, so there is no way R knows what was there before).
-- Brian D. Ripley, [email protected] 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 ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
