使用...函数参数作为另一个函数的输入

时间:2017-04-13 23:38:00

标签: r ggplot2

我想用...在不同的函数中将参数传递给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']]),引用/解析/替换的各种组合,但我无法正确评估它。

1 个答案:

答案 0 :(得分:0)

上一个函数的环境不会随对象一起传递,因此如果您保存调用然后尝试对其进行评估,g中的表达式将无法找到{{1} },仅存在于ylimits的环境中。

一个选项是使用f软件包,但目前已弃用rlang,其lazyeval可以很好地为您做好准备:

dots_list

相关问题