[R] Define "local" function
Gabor Grothendieck
ggrothendieck at gmail.com
Fri Apr 15 17:05:41 CEST 2005
On 4/15/05, Fernando Saldanha <fsaldan1 at gmail.com> wrote:
> I discovered a bug in a program I am writing which was due to the
> program using a global variable within a function.
>
> For example,
>
> myfunc <- function(x) { y}
>
> That is, I made a mistake when defining the function and wrote "y"
> when I should have written "x".
>
> However, there was a variable y in the global environment and the
> function "worked" but gave the wrong answer.
>
> I would like to avoid this problem by defining a "local" function.
> That would mean a function that only accepts as variables those that
> were defined within its body or were passed as parameters, and would
> generate an error when I try to define it if I am using an "external"
> variable. Something like:
>
> > myfunc <- function(x, type = 'local') { y}
> Error: using external variable
>
> I read the documentation about environments (I still do not understand
> a lot of it, have been working with R for four days now), and searched
> the newsgroups, but I could not find the way to do this.
>
> Thanks for any suggestions.
>
Try this:
> y <- 3
> f <- function(x) y
> environment(f) <- NULL
> f(1)
Error in f(1) : Object "y" not found
More information about the R-help
mailing list