在R中的函数中建立变量常量

时间:2016-04-27 06:00:57

标签: r function

有没有办法在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!

谢谢!

2 个答案:

答案 0 :(得分:2)

查找?lockBinding,您的答案为here

index <- 3
lockBinding("index", globalenv())
index <- 4
#> Error: cannot change value of locked binding for 'index'

答案 1 :(得分:2)

一种可能的解决方案是在另一个函数中定义您的函数:

g <- function( index ){
  function( x ) x + index
}
index <- 3
f <- g( index )
f(4)
index<-20
f(4)

现在g( index )的输出是在g的(执行)环境中定义的函数。此函数(f)将在此环境中查看index的值,并将其固定为3.这就是它工作的原因,但也许有一个更简单的解决方案。