I am also very interested how this could be done, possibly in such a way
that this would be incorporated in the function itself and there wouldn't be
a need to write "environment(f) <- NULL" before calling a function, as is
proposed in the reply below and in a thread a few days ago!
Thanks for any suggestions,
Ales Ziberna
----- Original Message -----
From: "Gabor Grothendieck" <ggrothendieck at gmail.com>
To: <fsaldanha at alum.mit.edu>
Cc: "Submissions to R help" <r-help at stat.math.ethz.ch>
Sent: Friday, April 15, 2005 5:05 PM
Subject: Re: [R] Define "local" function
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.
y <- 3
f <- function(x) y
environment(f) <- NULL
f(1)
Error in f(1) : Object "y" not found