有沒有什麼辦法可以在R中定義一個函數,其中的常數是由變量確定的?我不知道如何說更好,所以這裏是一個例子。在函數中創建變量常量R
> index<-3
> f<-function(x){x+index}
> f(4)
[1] 7 #Great!
> index<-20
> f(4)
[1] 24 #No! I still want to see 7!
謝謝!
有沒有什麼辦法可以在R中定義一個函數,其中的常數是由變量確定的?我不知道如何說更好,所以這裏是一個例子。在函數中創建變量常量R
> index<-3
> f<-function(x){x+index}
> f(4)
[1] 7 #Great!
> index<-20
> f(4)
[1] 24 #No! I still want to see 7!
謝謝!
一個可能的解決方案是另一個函數中定義的函數:
g <- function(index){
function(x) x + index
}
index <- 3
f <- g(index)
f(4)
index<-20
f(4)
現在的g(index)
的輸出是中定義的函數(執行)環境g
。此功能(f
)將在此環境中查看index
的值,它固定爲3.這就是它工作的原因,但也許有一個更簡單的解決方案。
謝謝!這看起來像BenBarnes在上面的評論中所暗示的,但是直到我讀到你的解決方案之前,我並不完全「明白」。 – Rubarb
關於環境的先進R的章節似乎相關:http://adv-r.had.co.nz/Environments.html – paljenczy
可能想看到http://stackoverflow.com/q/1169534 – BenBarnes
所以我最終與BenBarnes的短期方法,但會繼續閱讀paljenczy建議的環境,希望能提出一些「更好」的東西。謝謝你們倆! – Rubarb