[Rd] Imports problem
Duncan Murdoch
murdoch.duncan at gmail.com
Mon Feb 16 14:35:29 CET 2015
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. 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
More information about the R-devel
mailing list