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}}
>>
>> ______________________________________________
>> [email protected] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>
> ______________________________________________
> [email protected] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel