有没有什么办法可以在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