From gregory_r_warnes at groton.pfizer.com  Thu May 22 15:07:10 2003
From: gregory_r_warnes at groton.pfizer.com (Warnes, Gregory R)
Date: Thu May 22 20:08:25 2003
Subject: [Rd] How to avoid function masking
Message-ID: <D7A3CFD7825BD6119B880002A58F06C202F2C9CC@groexmb02.pfizer.com>


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


[Rd] How to avoid function masking
Warnes, Gregory R