如何避免在R中的包装函数中重新列出内部函数参数?

时间:2017-04-12 15:14:24

标签: r function arguments parameter-passing wrapper

假设我有一个带有许多参数的函数(例如plot())。

我想通过在该函数周围创建一个包装函数来为该函数添加一些功能。

  • 随机示例:

    plot.new <- function() {
      windows(width = 10, height = 10)
      plot()
    }
    

我的问题:如何制作内部函数的参数可以在我的新包装函数中提供?

  • 在定义我的包装函数时,如何在不重新输入内部函数的所有参数名的情况下这样做?

1 个答案:

答案 0 :(得分:2)

您可以使用three dots ellipsis

plot.new <- function(...) {
  windows(width = 10, height = 10)
  plot(...)
}

如果要在包装函数列表中显式包含任何内部函数参数,则还必须在内部函数中显式定义该参数:

plot.new <- function(x, ...) {
    graphics.off() #OPTIONAL
    windows(width = 10, height = 10)
    plot(x = x, ...)
}

#USAGE
plot.new(x = rnorm(10), y = rnorm(10), pch = 19)

And here is more discussion on using to distribute the arguments to multiple internal functions.