[Rd] How to deal with package conflicts

Gabor Grothendieck ggrothendieck at gmail.com
Fri Nov 25 17:28:34 CET 2011

On Fri, Nov 25, 2011 at 10:37 AM, Terry Therneau <therneau at mayo.edu> wrote:
> On Fri, 2011-11-25 at 09:50 -0500, Duncan Murdoch wrote:
>> I think the general idea in formulas is that it is up to the user to
>> define the meaning of functions used in them.  Normally the user has
>> attached the package that is working on the formula, so the package
>> author can provide useful things like s(), but if a user wanted to
>> redefine s() to their own function, that should be possible.
>> Formulas
>> do have environments attached, so both variables and functions should
>> be
>> looked up there.
> I don't agree that this is the best way.  A function like coxph could
> easily have in its documentation a list of the "formula specials" that
> it defines internally.  If the user want something of their own they can
> easily use a different word.  In fact, I would strongly recommend that
> they don't use one of these key names.  For things that work across
> mutiple packages like ns(), what user in his right mind would redefine
> it?
>  So I re-raise the question.  Is there a reasonably simple way to make
> the survival ridge() function specific to survival formulas?  It sets up
> structures that have no meaning anywhere else, and its global definition
> stands in the way of other sensible uses.  Having it be not exported +
> obey namespace type sematics would be a plus all around.
> Philosophical aside:
>  I have discovered to my dismay that formulas do have environments
> attached, and that variables/functions are looked up there.  This made
> sensible semantics for predict() within a function impossible for some
> of the survival functions, unless I were to change all the routines to a
> model=TRUE default.  (And a change of that magnitude to survival, with
> its long list of dependencies, is not fun to contemplate.  A very quick
> survey reveals several dependent packages will break.) So I don't agree
> nearly so fully with the "should" part of your last sentence.  The out
> of context evaluations allowed by environments are, I find, always
> tricky and often lead to intricate special cases.
>  Thus, moving back and forth between how it seems that a formula should
> work, and how it actually does work, sometimes leaves my head
> spinning.

The dynlm package uses formula functions which are specific to it.
Look at its code.

Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com

More information about the R-devel mailing list