Evaluation of function names...
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