假设我有以下函数:
foo <- function(x, y = min(m)) {
m <- 1:10
x + y
}当我运行foo(1)时,不出所料,返回值是2。但是,我不能运行foo(1, y = max(m))并接收11,因为惰性计算只对默认参数有效。我怎么能提供一个参数,但它的评估是懒惰的?
发布于 2015-05-13 22:20:36
您可以使用substitute、eval组合。
foo <- function(x, y = min(m)) {
y <- substitute(y)
m <- 1:10
x + eval(y)
}
foo(1)
## [1] 2
foo(1, y = max(m))
## [1] 11https://stackoverflow.com/questions/1395233
复制相似问题