[R] Global variables

Duncan Murdoch murdoch.duncan at gmail.com
Mon May 2 15:43:32 CEST 2011


On 02/05/2011 7:19 AM, abhagwat wrote:
> Well, what would be really helpful is to restrict the scope of all
> non-function variables, but keep a global for scope of all function
> variables. Then, you still have access to all loaded functions, but you
> don't mix up variables.
>
> How would one do that?

You can't without low level modifications.  Before R has done the 
lookup, it doesn't know if an object is a function or not.  It can guess 
by usage, e.g. it can recognize that "print" should be a function in 
print(1) and it will ignore non-functions named "print", but it is very 
common in R code to do things like

fn <- print
fn(1)

and that would fail.  But if you want to experiment with the change, you 
can, because R is open source.   I doubt if you'll get much help unless 
you give a really convincing argument (on the R-devel list, not on this 
list) why to make the change.

Duncan Murdoch

> Adi
>
>
> >  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)
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Global-variables-tp3178242p3489796.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list