这是Hadley最新着作(Advanced R)的一个例子。我希望他不介意我发布它。
我很难理解为什么这段代码会做它的功能。 有人可以扩展吗?我如何将其划分为迷你步骤?
add <- function(x) {
function(y) x+y
}
adders <- lapply(1:10,add)
我理解对“添加”功能的简单调用。
> add(2)(1)
[1] 3
在某种程度上,2分配给x,1分配给y。
当我们使用lapply这个函数时(这种方式),y如何赋值?
答案 0 :(得分:1)
这并不是你最初的想法。直觉表明对lapply
的调用会返回一个函数列表,这些函数会在其参数中添加1,2,3,...,10。
实际上,lapply(1:10,add)
返回一个函数列表,每个函数都会在其参数中加上10个。
在控制台中,我尝试了一个更简单的版本
> v<-lapply(1:3, add)
> v
[[1]]
function (y)
x + y
<environment: 0x28b0540>
[[2]]
function (y)
x + y
<environment: 0x28af678>
[[3]]
function (y)
x + y
<environment: 0x28af800>
> v[[1]](1)
[1] 4
> v[[2]](1)
[1] 4
> v[[3]](1)
[1] 4
>
很难看到使用这个结果。