On Mon, Jun 24, 2013 at 4:27 PM, David Kulp <dk...@fiksu.com> wrote:
> According to 
> http://cran.r-project.org/doc/contrib/Fox-Companion/appendix-scope.pdf and 
> other examples online, I am to believe that R resolves variables using 
> lexical scoping by following the frames up the call stack.  However, that's 
> not working for me.  For example, the following code, taken from the 
> reference above fails instead of returning 7.  What am I doing wrong?  Thanks!
>
> f <- function(x) { a<-5; g(x) }
> g <- function(y) { y + a }
> f(2)
> Error in g(x) : object 'a' not found
>

What you have described is called dynamic scoping. What lexical
scoping is is that it resolves free variables based on where the
function is _defined_, not where it is run and it has nothing to do
with the call stack.  a is a free variable in g and so when g is run R
looks up a in the environment where g was defined which is the global
environment and there is no a there.

--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com

______________________________________________
R-help@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.

Reply via email to