我试图绕过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的范围规则有基本的了解,但我无法弄清楚它是如何应用的