【发布时间】:2023-03-05 18:10:01
【问题描述】:
R 最大的特点之一是惰性求值。这导致了一种经常遇到的风格,即可以使用一个参数作为另一个参数的值。例如,在 Hadley 关于Advanced R 的伟大著作中,您会看到this example:
g <- function(a = 1, b = a * 2) {
c(a, b)
}
g()
#> [1] 1 2
g(10)
#> [1] 10 20
现在,我想对 xlim 和 ylim 的绘图做同样的事情,但是它不起作用:
> plot(1, 1, ylim = c(0,1), xlim = ylim)
Error in plot.default(1, 1, ylim = c(0, 1), xlim = ylim) :
object 'ylim' not found
> plot(1, 1, xlim = c(0,1), ylim = xlim)
Error in plot.default(1, 1, xlim = c(0, 1), ylim = xlim) :
object 'xlim' not found
- 有人知道为什么吗?
- 还有办法实现这一目标吗?
【问题讨论】:
-
我认为这很容易用adv-r.had.co.nz/Environments.html 中的更新定义来解释:默认参数评估函数的执行环境,提供的参数评估函数的调用环境。
标签: r lazy-evaluation argument-passing