在 R 中传入可选参数列表

Passing in list of optional arguments in R

我试图通过制作一个变量列表来简化我的代码,我可以将这些变量作为可选参数传递给函数。该函数还有其他可以直接指定的参数。例如:

foo <- function(data, ..., func = mean, cross_depth = NULL, data_table = FALSE){
what function does here}

varx <- list("var1", "var2", "var3")

foo(data, varx, func = func, data_table = TRUE, cross_depth = 3)

可选参数列表总是在变化,而且这个函数被反复使用,所以能够在函数本身之外指定这些变量会很有帮助。我尝试过以各种方式使用 do.call,但它一直在抛出错误。非常感谢任何帮助!

我认为处理这种模式最直接的方法是为函数提供一个 extra_args 参数,该参数接受任意列表(如果您想忽略它,则默认为空列表):

foo <- function(data, extra_args = list(), func = mean, 
                cross_depth = NULL, data_table = FALSE) {
  # Do stuff 
}

允许:

varx <- list("var1", "var2", "var3")

foo(data, varx, func = func, data_table = TRUE, cross_depth = 3)