I am reading Hadley Wickham's Advanced R to understand this language in a better way. I came across a section in the chapter Environments where he talks about the preference given to local variable over global variable.
For instance,
h <- function(){
x<-10
function(){
x
}
}
i<-h()
x<-20
i()
This could would return 10 and not 20 because local x overrides global x.
However, when I applied similar logic to the below code, global variable y overrode local y.
x <- 0
y <- 10
f <- function() {
x <- 1
g()
}
g <- function() {
x <- 2
y<-5 #Added by me
h()
}
h <- function() {
x <- 3
x + y
}
f()
The output is 13. I would have expected 8 because I have created a local variable y in h()'s calling function g(). Isn't it?
I'd appreciate any comments and guidance.