有人可以解释以下结果:
R> lapply(1:2, function(v) substitute(v))
[[1]]
1:2[[2L]]
[[2]]
1:2[[2L]]
鉴于lapply
的定义,我认为这应该返回一个包含元素substitute(1)
和substitute(2)
的列表。好像substitute(v)
没有在匿名函数范围内进行评估,而是在" parent"中进行评估。之一。
我发现更奇怪的是,如果我将eval
添加到substitute
,我会得到我正在等待的结果:
R> lapply(1:2, function(v) eval(substitute(v)))
[[1]]
[1] 1
[[2]]
[1] 2
我知道这些问题有点棘手,但显然有些东西我不能来这里。