[Rd] How to avoid function masking
Roger D. Peng
rpeng at stat.ucla.edu
Thu May 22 12:39:40 MEST 2003
I believe recent R-devel has a `pos' argument to library() which lets
you attach a package in a certain position. Can't think of anything
else though.
-roger
Warnes, Gregory R wrote:
> Hi All,
>
> I've been working on updating the 'genetics' package. As a consequence of
> the upgrade, .First.lib() looks like:
>
> .First.lib <- function(libname, pkgname)
> {
> if (!require(combinat))
> warning("Unable to load 'combinat' library. Function
> `diseq.ci' will fail.")
> require(gregmisc)
> genotype <- get("genotype",pos="package:genetics")
> }
>
> the First.lib of the "gregmisc" package in turn does
> require("MASS")
> which defines a data set "genotype" which masks the "genotype" function in
> my genetics library.
>
> Is there any clean way to load libraries in .First.lib while preventing this
> kind of masking? Ideally, there would be something like
>
> require("gregmisc", top=FALSE)
>
> which would load the library (and any libraries it loads) into the *third*
> position rather than the second position of the search path (.GlobalEnv is
> in the first slot)? Actually, does it make sense in general to have
> top=FALSE be the default behavior when loading packages from .First.lib to
> avoid masking of this type?
>
> For the moment I'm doing :
>
> .First.lib <- function(libname, pkgname)
> {
> if (!require(combinat))
> warning("Unable to load 'combinat' library. Function
> `diseq.ci' will fail.")
> require(gregmisc)
> assign("genotype", get("genotype",pos="package:genetics"),
> pos=.GlobalEnv )
> }
>
> but this is a hack and doesn't solve the general problem.
>
> -Greg
>
>
>
> LEGAL NOTICE\ Unless expressly stated otherwise, this message is... {{dropped}}
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
>
>
More information about the R-devel
mailing list