如何创建函数向量?

Roc*_*nce 16 r

我想使用两个agruments函数'func'创建一个函数向量,例如这个:

func = function(number, coefficient) {  
     return(coefficient*number)  
}
Run Code Online (Sandbox Code Playgroud)

这是我如何创建函数向量:

vector_of_functions = NULL  
for (i in 1:4) {  
     vector_of_functions = c(vector_of_functions, 
                             function(number) func(number=number, coefficient=i))  
}
Run Code Online (Sandbox Code Playgroud)

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

有人有想法吗?

ars*_*ars 13

使用带有闭包工厂函数(它将保存循环变量的值):

> # 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
> 
Run Code Online (Sandbox Code Playgroud)