On Jun 24, 2013, at 3: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


You need to follow the full example code in John's Appendix:

f <- function (x) x + a

# Here 'a' is being defined in the global environment
a <- 10

# As is 'x' here
x <- 5


# Note that 10 + 5 would be 15,
# 12 is returned showing that x = 2 and not x = 5
# is being use within f()
> f(2)
[1] 12



# Here is where your code starts
# missing the preceding code where 'a' was
# defined globally

f <- function(x) { a<-5; g(x) }


g <- function(y) y + a


# Now it works, showing that 'a <- 5' within f() is not part of the 
# value returned by g(), which is the goal of John's example code :-)
> f(2)
[1] 12


Regards,

Marc Schwartz

______________________________________________
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