相关疑难解决方法(0)

你能更清楚地解释R函数运算符中的惰性求值吗?

如果我创建一个函数如下:

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)

但是当我浏览时,我发现两个函数都有自己的环境: …

r lazy-evaluation environments

13
推荐指数
1
解决办法
1953
查看次数

标签 统计

environments ×1

lazy-evaluation ×1

r ×1