[Rd] Imports problem

Uwe Ligges ligges at statistik.tu-dortmund.de
Mon Feb 16 15:00:20 CET 2015



On 16.02.2015 14:35, Duncan Murdoch wrote:
> On 16/02/2015 8:20 AM, Therneau, Terry M., Ph.D. wrote:
>>
>>>      > I'm testing out a new version of coxme and R CMD check fails with "could not find function
>>>       > ranef" (or random.effects or fixef, or anything from nlme).  The NAMESPACE file has the
>>>       > line below
>>>
>>>       > importFrom(nlme, ranef, random.effects, fixef, fixed.effects, VarCorr)
>>>
>>>       > and nlme is declared in the DESCRIPTION file as an import.  I feel that I must be staring
>>>       > at some obvious (but invisible to me) mistake.
>>>
>>> are you using them in (help page) examples, demos, or vignettes
>>> ?
>>>
>>> In that case, as you no longer 'Depend' on lme4, you need a
>>>    require(lme4)
>>> before the corresponding code.
>>
>> Duncan and Martin,
>>
>> These are helpful comments.  Let me start over and be more clear. It also helps that I'm
>> not writing this second note when I am too tired, and trying to push coxme out the door
>> before I had planned because of an interaction with one of the "survival" data sets
>> ("rats" got bigger, making one coxme test fail).
>>
>>     1. The heart of the issue is an attempt to follow the general advice of "almost no
>> depends, only imports."  For the S3 methods imported from nlme I now see this as a bad
>> idea.  The help page, vignettes, etc all tell the users of coxme to type "ranef(fit)" to
>> get random effects.  I do not want to force them to type "nlme::ranef(fit)".  I will
>> return nlme to the depends list.
>
> I believe you can import it and then export it from your own package,
> though I don't know if this will lead to other problems.
>
>>     2. I depend on the S3 generics of nlme: both of you wrote "lme4" in your response.
>> Freudian slip, or was there a reason?
>
> Not for me:  I just copied it from Martin's message.
>
>   I can include either, as long as it works.  The
>> reason I don't define the generics myself is that it is quite possible for someone to be
>> fitting both linear and Cox mixed effects models, and if two packages define the generics
>> de novo then all methods for one of them disappear, or at least that was true in prior
>> releases of R (the last one loaded wins).  Any advice?   Take it as a given that survival
>> and coxme will remain firmly in the S3 camp.
>>
>>    3. Given 1 and 2, should the coxme function import all of nlme, or (as present) only the
>> methods?
>
> If you are depending on nlme, you don't need to also import it.

Well, you should import all the functionality that you actually want to 
use (see Duncan's comment below). Otherwise R CMD check should yell.

Best,
Uwe

> But it
> is generally a good practice to avoid either modifying or relying on the
> search list:  as people get more packages there, there are more chances
> for clashes.
>
> Duncan
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



More information about the R-devel mailing list