【发布时间】:2015-02-17 00:04:02
【问题描述】:
这是 Hadley 最新著作 (Advanced R) 中的一个示例。我希望他不介意我发布它。
我很难理解为什么这段代码 sn-p 会这样做。 有人可以对此进行扩展吗?我怎样才能把它分成小步骤?
add <- function(x) {
function(y) x+y
}
adders <- lapply(1:10,add)
我理解对“添加”函数的更简单调用。
> add(2)(1)
[1] 3
在某种程度上,2 分配给 x,1 分配给 y。
当我们将此函数与 lapply 一起使用时(这种方式),如何为 y 赋值?
【问题讨论】:
-
嗯,这很奇怪——加法器中的所有 10 个函数都是相同的:
function(y) 10+y。试试sapply(adders,function(z) `z`(1))不过,这似乎不是你的问题;我什至不知道你的问题是什么意思。y在您的lapply调用中没有分配一个值。你的函数返回一个函数。 -
这被哈德利解释为“懒惰评估”的案例:github.com/hadley/adv-r/blob/master/…
标签: r function lazy-evaluation