[R] Evaluation of function names...

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Jun 7 16:09:45 CEST 2013


On 07/06/2013 14:49, Bert Gunter wrote:
> Folks:
>
> Feel free to provide me a link or reference instead of an answer.
>
> Preamble:
>
> f <- function() function(x)rnorm(x)
> g <- f()
> g(3)
> ## [1] -0.4448492 -0.2379978 -0.4537394
>
> ## But
> rnorm <- function()1  ## nasty nasty
> g(3)
> ## Error in rnorm(x) : unused argument(s) (x)
>
> ## of course f <- function()function(x)stats:::rnorm(x)
> ## would fix this.
>
> Question 1:
> Suppose I defined f() as at top in a package namespace and exported it.
> Would a user see this same error defining g() and with rnorm redefined
> as above? (Assume stats is attached as usual).  I presume so, but ...

Not if done right.  The package should importFrom(stats, rnorm).

> Question 2:
> If the answer to Q1 is yes, (how) can this be avoided without using fully
> qualified function names?
>
> Again, a quick reference to relevant docs would suffice.

'Writing R Extensions' says

'The namespace controls the search strategy for variables used by 
functions in the package. If not found locally, R searches the package 
namespace first, then the imports, then the base namespace and then the 
normal search path.'

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list