Consider the function with functions below:
f1=function(){
f3=function() print(a)
f2=function() {
print(a)
a=3
f3()}
print(a)
a=2
f2()
a=1
f1()
[1] 1
[1] 2
[1] 2
Why does f2() consider f1() its parent environment but f3() does not consider f2() its parent environment? I expect f3() printing 3, set on f2(), rather than 2.
If a variable is defined inside f2(), f3() can not find it:
f1=function(){
f3=function() print(b)
f2=function() {
print(a)
b=3
f3()}
print(a)
a=2
f2()
a=1
f1()
[1] 1
[1] 2
Error in print(b) : object 'b' not found