[R] Function does not see variables outside the function

John Fox jfox at mcmaster.ca
Wed Nov 6 14:57:13 CET 2013


Dear Zhong-Yuan Zhang,

R is lexically scoped. Pretending that you're using a different programming
language is probably a bad idea. 

The findGlobals() function in the codetools package, which is part of the
standard R distribution, can help you locate references to global variables
(and functions) in a function. For example,

> f <- function() g(a)

> findGlobals(f)
[1] "a" "g"

> ff <- function() {a <- 10; g(a)}

> findGlobals(ff)
[1] "{"  "<-" "g"

> fff <- function(a) g(a)

> findGlobals(fff)
[1] "g"

I hope this helps,
 John

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Zhong-Yuan Zhang
> Sent: Wednesday, November 06, 2013 7:32 AM
> To: r-help at r-project.org
> Subject: Re: [R] Function does not see variables outside the function
> 
> Dear Experts:
> 
>     I am very appreciate your comments and help!
> 
>     Actually I am a new comer from MATLAB. If the function
> 
> can see global variables, then it may output wrong results without
> 
> any error messages. For example, there is a gloabl variable named
> 
> v, and I write one funciton with one local variable x. However, in some
> line,
> 
> I misspelled x to v, which would results in unexpected errors without
> warning.
> 
>     In summary, I want to disable the ability to make debugging easier.
> 
>     Best.
> 
> 
> 2013/11/5 Carl Witthoft <carl at witthoft.com>
> 
> > Why would you want to impose this restriction?  Perhaps if you
> explain what
> > you are trying to do, we can suggest approaches that will satisfy
> your
> > specific needs.
> > (note- one can always redefine whatever variables are to be
> "excluded."
> > E.g.
> > to keep the body of a function from referring to 'foo' in the calling
> > environment, just add the line 'foo<-NA' inside the function)
> >
> >
> > Zhong-Yuan Zhang wrote
> > >      In MATLAB, functions cannot see variables outside the
> > >
> > > functions.  However, in R, the functions can do that. Is there
> > >
> > > any settings that can disable this ability of functions?
> > >
> > >
> > > ______________________________________________
> >
> > > R-help@
> >
> > >  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.
> >
> >
> >
> >
> >
> > --
> > View this message in context:
> > http://r.789695.n4.nabble.com/Function-does-not-see-variables-
> outside-the-function-tp4679762p4679768.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.
> >
> 
> 
> 
> --
> Zhong-Yuan Zhang (PhD.)
> Associate Professor
> School of Statistics
> Central University of Finance and Economics
> 39 South College Road, Haidian District, Beijing, P.R.China 100081
> Email: zhyuanzh at gmail.com
> Homepage: http://en.stat.cufe.edu.cn/zhongyuanzhang/
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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