【问题标题】:Generate a list of functions from a closure从闭包生成函数列表
【发布时间】:2015-12-27 17:20:11
【问题描述】:
power <- function(exp) {
  function(x) {
    x ^ exp
  }
}
funlist <- lapply(2:3, power)

现在我希望“funlist”的第一个元素是平方函数,第二个元素是立方体函数。然而,它似乎只是重复了“立方体”。

> funlist[[1]](5)
[1] 125
> funlist[[2]](5)
[1] 125

有没有办法以这种方式从闭包中生成函数列表?或者围绕我可能希望以这种方式解决的问题的一般最佳实践?

【问题讨论】:

  • 我无法重现输出。我第一个得到 25。使用R version 3.2.2
  • @FrankP。你以前的版本是什么?

标签: r functional-programming closures


【解决方案1】:

它在 3.2.0 中改变行为的原因是 news() 文件中的这个公告:

高阶函数,例如 apply 函数和 Reduce() 现在 对它们应用的函数强制参数以消除 惰性求值和变量捕获之间的不良交互 在闭包中。这解决了 PR#16093。

【讨论】:

  • 如果您使用news(Version == "3.2.0" &amp; grepl("Higher", Text)) 来获得它,这个答案会更酷。哈哈,开个玩笑。
  • 其实我是用浏览器打开新闻,搜索force。所以我想我应该写:......“卢克,@ 987654323@'力量'”。
猜你喜欢
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 2022-11-29
相关资源
最近更新 更多