我想用...在不同的函数中将参数传递给ggplot。例如:
dat <- data.frame(x = c(1, 2, 3), y = c(1, 2, 3))
f <- function(dat) {
ylimits = c(min(dat$x, dat$y), max(dat$x, dat$y))
g(dat, ylim = ylimits)
}
g <- function(dat, ...) {
args <- eval(substitute(alist(...)))
ggplot(dat, aes(x = x, y = y)) + geom_point() + coord_cartesian(ylim = args[['ylim']])
}
f(dat)
我尝试使用eval(args [['ylim']]),引用/解析/替换的各种组合,但我无法正确评估它。
答案 0 :(得分:0)
上一个函数的环境不会随对象一起传递,因此如果您保存调用然后尝试对其进行评估,g
中的表达式将无法找到{{1} },仅存在于ylimits
的环境中。
一个选项是使用f
软件包,但目前已弃用rlang
,其lazyeval
可以很好地为您做好准备:
dots_list