将默认参数传递给函数的所有未指定参数有什么好方法?例如,使用list.dirs
有三个参数:path
,full.names
和recursive
。在这个例子中。我想提供路径参数,然后提供一个默认参数(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)))
答案 0 :(得分:2)
使用formals()
返回参数列表,使用length()获取参数数量,并复制以创建默认值列表'参数是正确的长度(减去手动设置的参数)。
do.call("list.dirs", c(list("."), replicate(length(formals("list.dirs"))-1,expr = "FALSE")))