2015-10-30 86 views
1

最近我一直在使用的R的特性之一(感謝R.cache)是函數聲明其他函數的能力。特別是,當這樣做時,可以將一些變量作爲結果函數的固有部分。如何訪問存儲在函數中的變量R

例如:

functionBuilder <- function(wordToSay) { 
    function() { 
    print(wordToSay) 
    } 
} 

可以建立一個功能,像這樣:

functionToRun <- functionBuilder("hello nested world")

然後functionToRun()將導致"hello nested world"。但是,如果你只是看functionToRun(即打印它),你會看到匹配functionBuilder的代碼。你還會看到的是functionToRun有一個環境。如何訪問存儲在functionToRun內部的wordToSay的值?

起初我想: get("wordToSay",env=functionToRun) ......但functionToRun不是環境,不能轉化爲通過as.environment的環境。同樣,因爲functionToRun不是一個環境,所以不能附加到它或使用with

回答

2

我發現environment是獲取和設置環境的訪問函數,它以一種非常規的方式來獲取和設置名稱屬性。因此,獲得functionToRun環境的代碼是environment(functionToRun),因此我們可以通過get("wordToSay",environment(functionToRun))行訪問wordToSay