【问题标题】:How to create a vector of functions?如何创建函数向量?
【发布时间】:2010-10-21 08:42:45
【问题描述】:

我想使用两个参数函数“func”创建一个函数向量,例如这个:

func = function(number, coefficient) {  
     return(coefficient*number)  
}

这是我创建函数向量的方法:

vector_of_functions = NULL  
for (i in 1:4) {  
     vector_of_functions = c(vector_of_functions, 
                             function(number) func(number=number, coefficient=i))  
}

我的问题是组成我的向量的所有函数都是相同的,即使它们是通过循环使用不同的i 创建的。使用i 的最后一个值(这里是一个全局变量)对它们进行评估。

有人有想法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    在其参数上使用factory functionclosure(它将保存循环变量的值):

    > # the factory function
    > makefunc <- function(x) { x; function() x }
    > funclist <- list()
    > for (i in 1:3) funclist[[i]] <- makefunc(i)
    > funclist[[1]]()
    [1] 1
    > funclist[[2]]()
    [1] 2
    > 
    

    【讨论】:

    • 嘿嘿太棒了!非常感谢ars
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2021-03-26
    • 2021-03-27
    • 2015-02-18
    • 1970-01-01
    • 2017-06-20
    相关资源
    最近更新 更多