On Nov 7, 2012, at 9:25 AM, Simon Urbanek wrote:

> On Nov 7, 2012, at 4:04 AM, Mauricio Zambrano-Bigiarini wrote:
> 
>> Dear R developers,
>> 
>> Taking advantage of the yesterday discussion about the use of 
>> Depends/Import/Suggests/Enhances, I would like to add a related question.
>> 
>> Let's assume, in the DESCRIPTION file of my package foo0, I have:
>> 
>> Depends: foo1
>> Imports: foo2
>> 
>> while in the NAMESPACE file of my package I have
>> 
>> importFrom("foo2", f2)
>> 
>> 
>> and within my package I use the following two external functions:
>> 
>> f1, from package foo1
>> f2, from package foo2
>> 
>> 
>> If I want to use the two previous functions within a function of my package 
>> foo0, is it correct to call them as follow ( assuming 'x' is the only 
>> argument of 'f1' and 'f2'):
>> 
>> f1(x)
>> foo2::f2(x)
>> 
>> OR should I use
>> 
>> foo1::f1(x)
>> f2(x)
>> 
>> OR
>> 
>> f1(x)
>> f2(x)
>> 
> 
> Yes, this one. You have imported f2 so the whole point of that is that it 
> will be inserted as "f2" into your imports environment, so you want to use it 
> that way. When you use foo2:: you are skipping over imports and addressing 
> the namespace of foo2 directly which sort of defeats the purpose (and is 
> slower).
> 
> As for f1, you have attached the package so it is available. I would not use 
> foo1:: for the same reason as above, but there is a risk that it may get 
> clobbered since the call will go through the search path so you may not get 
> f1 from foo1 necessarily - this may or may not be a good thing depending on 
> your intentions. You could import it via import(foo1) to make sure you don't 
> need to go through the search path - that's what I would do if I don't intend 
> overrides. (Whether you want to use Depends or Imports in that case is 
> related to what you intend for the user to see as I was saying in my last 
> comment - if I expect users to use foo1 as well, I would use Depends, 
> otherwise Imports is good enough.)
> 
> 
>> OR
>> 
>> something else (the correct way of doing it in R) ?
>> 
>> 
>> 
>> Finally, can I use the following call in the body of a function of my 
>> package foo0:
>> 
>> foo3::f3(x)
>> 
>> without declaring the package 'foo3' in the Imports section of my 
>> DESCRIPTION file ?
>> 
> 
> No, it has to be at least in Enhances or Suggests (see R-exts 1.1.1).
> 

This should have been "Yes, but it has ..."


> Cheers,
> Simon
> 
> 
>> 
>> Thanks in advance for your help,
>> 
>> 
>> Mauricio Zambrano-Bigiarini
>> 
>> -- 
>> =================================================
>> Water Resources Unit
>> Institute for Environment and Sustainability (IES)
>> Joint Research Centre (JRC), European Commission
>> TP 261, Via Enrico Fermi 2749, 21027 Ispra (VA), IT
>> webinfo    : http://floods.jrc.ec.europa.eu/
>> =================================================
>> DISCLAIMER:\ "The views expressed are purely those of th...{{dropped:11}}
>> 
>> ______________________________________________
>> R-devel@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> 
>> 
> 
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to