定义任意数量和种类的参数

时间:2015-10-05 18:14:31

标签: r

我遇到了问题而且我不知道如何解决它。当我定义一个函数并确定它的参数时,我想定义一个任意数量的参数。例如,我想创建一个函数(自定义密度),我想放置许多需要密度的值向量。

传统方式是这样的

dens_cust<- function( vector , ... other arguments desired ...)

在这种情况下,我的函数只绘制一个密度,但我想绘制任意数量的向量。

是一些简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以使用...参数执行此操作。例如,除了两个参数arg1arg2之外,如果你想传递任意数量的向量,你可以这样做:

dens_cust <- function(arg1, arg2, ...) {
  vecs <- list(...)
  # "vecs" is a list of the passed vectors; process each however you want
}

举一个简单的例子,您可以抓住并返回a次每个传递的向量加上b的平均值,例如:

dens_cust <- function(a, b, ...) {
  vecs <- list(...)
  a * sapply(vecs, mean) + b
}
dens_cust(2, 3, 1:3, 4:10)
# [1]  7 17

如果您想要将一些绘图函数plot_dens应用于每个向量,则可以使用:

dens_cust <- function(...) {
  vecs <- list(...)
  for (v in vecs) {
    plot_dens(v)
  }
}