[Rd] How to deal with package conflicts
Duncan Murdoch
murdoch.duncan at gmail.com
Fri Nov 25 19:37:18 CET 2011
On 25/11/2011 12:12 PM, Terry Therneau wrote:
> I like the idea of making the functions local, and will persue it.
> This issue has bothered me for a long time -- I had real misgivings when
> I introduced "cluster" to the package, but did not at that time see any
> way other than making it global.
> I might make this change soon in the ridge function, since it's a good
> test case -- less likely to cause downstream troubles.
>
> Here is another possible approach:
> Inside coxph, just before calling eval with the formula, create a new
> environment "tempenv" which consists of my handful of special functions
> (ridge, frailty, cluster, pspline) who have meaning only inside a coxph
> call, with a parent environment of the tempenv being the current
> environment of the formula. Then set the environment of the formula to
> tempenv, then eval. Would this work?
It should.
> Two small further questions:
> 1. Any special rules for the documentation? We need a page for
> "cluster", but want to mark it almost like a method in the sense of
> applying only in a one context.
I would list those special functions as aliases of the coxph topic, and
document them there.
> 2. Does one scheme or another work best for downstream functions like
> predict or model.matrix? Duncan's idea of direct modification might
> have an advantage (?) in that the terms object would be permanently
> changed.
As long as you attach your new temporary environment to copies of the
formula that you pass elsewhere, it should mostly work. It may confuse
someone who did ls(environment(formula)) (because they'd only see your
functions, not the user's), but I don't think that's a very common thing
to want to do.
Duncan Murdoch
More information about the R-devel
mailing list