如果我创建一个函数如下:
what_is_love <- function(f) {
function(...) {
cat('f is', f, '\n')
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为lapply: funs <- lapply(c('love', 'cherry'), what_is_love)
我得到了意外的输出:
> funs[[1]]()
f is cherry
> funs[[2]]()
f is cherry
Run Code Online (Sandbox Code Playgroud)
但请注意,当您不使用时,情况并非如此lapply:
> f1 <- what_is_love('love')
> f2 <- what_is_love('cherry')
> f1()
f is love
> f2()
f is cherry
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?
我知道funs <- lapply(c('love', 'cherry'), what_is_love)可以写得更全面:
params <- c('love', 'cherry')
out <- vector('list', length(params))
for (i in seq_along(params)) {
out[[i]] <- what_is_love(params[[i]])
}
out
Run Code Online (Sandbox Code Playgroud)
但是当我浏览时,我发现两个函数都有自己的环境: …