gpt4 book ai didi

R 函数闭包环境

转载 作者:行者123 更新时间:2023-12-01 08:59:52 24 4
gpt4 key购买 nike

<分区>

我最近遇到了一些意外的 R 行为,可以使用以下代码以最简单的形式重现:

make.adder <- function(a) {function(x) {x + a}}
s <- list(1, 2)
adders <- lapply(s, make.adder)

我们现在可能期望 adders[[1]] 是一个加 1 的函数,而 adders[[2]] 是一个加 2 的函数。但是,

adders[[1]](1)

返回 3(当我们预期为 2 时)。看看环境

environment(adders[[1]])$a

返回 2,这再次令人惊讶(但一致)。这里发生了什么?

如果我们尝试使用 for 循环,我们会看到类似的行为:

adders <- list()
for (i in seq(1, 2)) {adders[[i]] <- make.adder(i)}

同样,adders[[1]] (1) 返回 3。我们如何创建一个包含 100 个函数的列表,使得第 i 个函数是 make.adder(i)?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com