有没有办法在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!
谢谢!
答案 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.这就是它工作的原因,但也许有一个更简单的解决方案。