将参数作为默认参数传递给所有未命名的函数参数

时间:2015-12-01 02:53:15

标签: r function

将默认参数传递给函数的所有未指定参数有什么好方法?例如,使用list.dirs有三个参数:pathfull.namesrecursive。在这个例子中。我想提供路径参数,然后提供一个默认参数(FALSE),它被传递给所有剩余的函数参数。在这个例子中,简单地为剩下的两个参数指定FALSE显然没有问题,但是如果我想用默认值指定很多参数会怎样呢?

相当于

的东西
list.dirs(path=".", full.names = FALSE, recursive = FALSE)

但有类似的东西(它不起作用)

do.call("list.dirs", list(path=".", FALSE))

或(也没有工作)

do.call("list.dirs", list(path=".", rep(FALSE, 2)))

1 个答案:

答案 0 :(得分:2)

使用formals()返回参数列表,使用length()获取参数数量,并复制以创建默认值列表'参数是正确的长度(减去手动设置的参数)。

do.call("list.dirs", c(list("."), replicate(length(formals("list.dirs"))-1,expr = "FALSE")))