【问题标题】:Making a Variable Constant in a Function in R [duplicate]在R中的函数中制作变量常量[重复]
【发布时间】:2016-08-21 06:11:40
【问题描述】:

有什么方法可以在 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 的环境章节似乎相关:adv-r.had.co.nz/Environments.html
  • 所以我最终在短期内采用了 BenBarnes 的方法,但会继续阅读 paljenczy 建议的环境,希望能提出一些“更好”的东西。谢谢你们!
  • “偏函数”和“柯里化”这两个搜索词可能会引导您找到解决方案。

标签: r function


【解决方案1】:

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

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 在上面的评论中建议的那样,但直到我阅读了您的解决方案,我才完全“明白”。
【解决方案2】:

寻找?lockBinding,你的答案是here

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

【讨论】:

  • 谢谢,但我希望能够在定义函数后更改“index”的值。理想情况下,如果我查看函数,我会看到:function(x){x+3}。
猜你喜欢
  • 2013-01-30
  • 1970-01-01
  • 2015-10-25
  • 2015-03-30
  • 2010-11-22
  • 2012-06-19
  • 2012-11-03
  • 2015-06-22
  • 2017-06-16
相关资源
最近更新 更多