From therneau at mayo.edu  Mon Feb 16 14:20:05 2015
From: therneau at mayo.edu (Therneau, Terry M., Ph.D.)
Date: Mon, 16 Feb 2015 07:20:05 -0600
Subject: [Rd] Imports problem
In-Reply-To: <mailman.11.1424084405.7886.r-devel@r-project.org>
References: <mailman.11.1424084405.7886.r-devel@r-project.org>
Message-ID: <1e7ee5$2ga8r@ironport10.mayo.edu>


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

   2. I depend on the S3 generics of nlme: both of you wrote "lme4" in your response.  
Freudian slip, or was there a reason?  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?

Terry T



[Rd] Imports problem
Therneau, Terry M., Ph.D.