强制功能示例混淆

时间:2017-02-02 22:04:54

标签: r

我试图绕过R范围规则,而我在理解R文档中的强制函数示例时遇到了问题

f <- function(y) function() y
lf <- vector("list", 5)
for (i in seq_along(lf)) lf[[i]] <- f(i)
lf[[1]]()  # returns 5

g <- function(y) { force(y); function() y }
lg <- vector("list", 5)
for (i in seq_along(lg)) lg[[i]] <- g(i)
lg[[1]]()  # returns 1

为什么

lf[[1]]()

返回5而不是1?

我对哈德利的前进R的范围规则有基本的了解,但我无法弄清楚它是如何应用的

0 个答案:

没有答案