我最近一直在使用的R的一个特性(感谢R.cache
)是函数声明其他函数的能力。特别是,当人们这样做时,人们可以将一些变量作为结果函数的固有部分。
例如:
functionBuilder <- function(wordToSay) {
function() {
print(wordToSay)
}
}
可以构建这样的函数:
functionToRun <- functionBuilder("hello nested world")
然后functionToRun()
会产生"hello nested world"
。但是如果你只看一下functionToRun(即打印它),你会看到匹配functionBuilder
的代码。你还会看到functionToRun
有一个环境。如何访问存储在wordToSay
内的functionToRun
的值?
起初我尝试过:
get("wordToSay",env=functionToRun)
...但是functionToRun不是一个环境,不能通过as.environment转换为环境。同样,由于functionToRun
不是环境,因此您无法附加或使用with
。
答案 0 :(得分:2)
我发现environment
是获取和设置环境的访问器函数,以一种分析names
获取和设置名称属性的方式。因此,获取functionToRun
环境的代码为environment(functionToRun)
,因此,我们可以使用行wordToSay
访问get("wordToSay",environment(functionToRun))
。