[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