【发布时间】:2017-01-28 08:52:15
【问题描述】:
我想在 R 中创建一个函数列表,其中来自 for 循环的值存储在函数定义中。这是一个例子:
init <- function(){
mod <- list()
for(i in 1:3){
mod[[length(mod) + 1]] <- function(x) sum(i + x)
}
return(mod)
}
mod <- init()
mod[[1]](2) # 5 - but I want 3
mod[[2]](2) # 5 - but I want 4
在上面的示例中,无论我调用哪个函数,i 始终是 for 循环序列中的最后一个值,我理解这是正确的行为。
我正在寻找能够实现这一目标的东西:
mod[[1]] <- function(x) sum(1 + x)
mod[[2]] <- function(x) sum(2 + x)
mod[[3]] <- function(x) sum(3 + x)
【问题讨论】:
-
为什么?看起来很绕。听起来您想在循环之前声明另一个变量,例如
const <- 2,并改用sum(const + x)。还是很迷茫…… -
我添加了一个我希望每个函数看起来像的示例。我的实际用例更复杂。我只是想了解作用域的工作原理。