From murdoch.duncan at gmail.com  Mon Feb 16 14:35:29 2015
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Mon, 16 Feb 2015 08:35:29 -0500
Subject: [Rd] Imports problem
In-Reply-To: <1e7ee5$2ga8q@ironport10.mayo.edu>
References: <mailman.11.1424084405.7886.r-devel@r-project.org>
	<1e7ee5$2ga8q@ironport10.mayo.edu>
Message-ID: <54E1F221.4010106@gmail.com>

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



[Rd] Imports problem
Duncan Murdoch