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