在函数式编程的介绍中,作者Hadley Wickham创建了以下函数工厂:
power <- function(exponent) {
function(x) {
x ^ exponent
}
}
Run Code Online (Sandbox Code Playgroud)
然后他展示了如何使用此函数来定义其他函数,例如
square <- power(2)
cube <- power(3)
Run Code Online (Sandbox Code Playgroud)
现在假设我想通过以下循环同时创建这些函数:
ftns <- lapply(2:3, power)
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,因为3被分配给列表的所有条目的指数:
as.list(environment(ftns[[1]]))
$exponent
[1] 3
Run Code Online (Sandbox Code Playgroud)
有人可以帮我理解这段代码有什么问题吗?
谢谢!