[Rd] How to avoid function masking

Warnes, Gregory R gregory_r_warnes at groton.pfizer.com
Thu May 22 15:07:10 MEST 2003


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



More information about the R-devel mailing list