0
为什么下面的嵌套函数f2
不能按预期工作?R中的嵌套函数
c = 2
f1 = function(a,b){
(a+b)*c
}
f1(1,2) # 6
f2 = function(a,b,c){
f1(a,b)
}
f2(1,2,c=3) # still 6, expect 9
更新
我发现下面的改装工程:
f2 = function(a,b,c){
c <<- c
f1(a,b)
}
f2(1,2,c=3) # returns 9 as expected
但我困惑的一个函数调用如何沿环境的路径搜索值。如果我的问题只是由于R的懒惰评估,我只需要c <- c
。然后新的c
将处于调用f2
的环境中。由于f1
嵌套在f2
中,因此其环境嵌套在f2
的环境中。所以当我需要c
f1
时,它应该能够在父环境中找到c
。但事实证明,它只能找到全球c
,而不是f2
的环境中的c
。
谢谢。这正是我正在寻找的。 – panc