[R] Global variables
Duncan Murdoch
murdoch.duncan at gmail.com
Thu Jan 6 22:59:08 CET 2011
On 06/01/2011 4:45 PM, Sebastien Bihorel wrote:
> Dear R-users,
>
> Is there a way I can prevent global variables to be visible within my
> functions?
Yes, but you probably shouldn't. You would do it by setting the
environment of the function to something that doesn't have the global
environment as a parent, or grandparent, etc. The only common examples
of that are baseenv() and emptyenv(). For example,
x <- 1
f <- function() print(x)
Then f() will work, and print the 1. But if I do
environment(f) <- baseenv()
then it won't work:
> f()
Error in print(x) : object 'x' not found
The problem with doing this is that it is not the way users expect
functions to work, and it will probably have weird side effects. It is
not the way things work in packages (even packages with namespaces will
eventually search the global environment, the namespace just comes
first). There's no simple way to do it and yet get access to functions
in other packages besides base without explicitly specifying them (e.g.
you'd need to use stats::lm(), not just lm(), etc.)
Duncan Murdoch
More information about the R-help
mailing list