我遇到了问题而且我不知道如何解决它。当我定义一个函数并确定它的参数时,我想定义一个任意数量的参数。例如,我想创建一个函数(自定义密度),我想放置许多需要密度的值向量。
传统方式是这样的
dens_cust<- function( vector , ... other arguments desired ...)
在这种情况下,我的函数只绘制一个密度,但我想绘制任意数量的向量。
是一些简单的解决方案吗?
答案 0 :(得分:1)
您可以使用...
参数执行此操作。例如,除了两个参数arg1
和arg2
之外,如果你想传递任意数量的向量,你可以这样做:
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)
}
}