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