【问题标题】:Create a list of functions using R? [duplicate]使用 R 创建函数列表? [复制]
【发布时间】:2014-08-29 07:11:13
【问题描述】:

我有以下 R 代码(这个问题的最后一部分),在最后一行之后,我希望得到一个包含 4 个“retFun”函数的列表,每个函数都用不同的 x 初始化,以便我得到以下结果

funList[[1]](1) == 7 #TRUE
funList[[2]](1) == 8 #TRUE

等等,但我似乎得到的是

funList[[1]](1) == 10 #TRUE
funList[[2]](1) == 10 #TRUE

好像列表中的每个函数都有相同的x值

creatFun <- function(x, y)
{
  retFun <-  function(z)
  {
    z + x + y

  }
}


myL <- c(1,2,3,4)
funList <-sapply(myL, creatFun, y = 5)

【问题讨论】:

    标签: r


    【解决方案1】:

    这可能是(并且可能在某处)关于惰性求值如何在 R 中工作的练习。您需要在创建每个函数之前强制对 x 求值:

    creatFun <- function(x, y)
    {
        force(x)
      retFun <-  function(z)
      {
        z + x + y
      }
    }
    

    ...为了安全起见,您可能也应该 force(y) 以及当您没有为该参数传递单个值时。

    可以在 Hadley 即将出版的书中找到很好的讨论,特别是函数章节中的 lazy evaluation 部分(向下滚动)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多