将可变数量的参数传递给 R 函数

Passing variable number of arguments to R function

我有一个函数可以接收可变(和未知)数量的参数。 最简单的例子是

test <- function(...){
       print(length(list(...)))
}

此函数是从 Shiny 应用程序调用的,用户在其中提供以逗号分隔的输入参数。 假设我解析了参数并将它们放在向量中

args <- c(1,2,3,4)

如何在不显式调用

的情况下将这些参数传递给函数test
test(args[1], args[2], args[3], args[4])

在我的例子中,上面的解决方案并不好,因为参数的数量是未知的,我不能硬编码。

我也不能修改函数 test 以将所有参数作为列表接收(该函数是我不能t/don不想修改的包的一部分)

我们可以使用do.callargs 是一个向量,do.call 需要一个参数列表,我们可以使用 as.list.

args 转换为列表
do.call(test, as.list(args))
#[1] 4