expand_list
expands a named list with a given set of default items,
if these are not already in the list, partially matching their names.
expand_list(x, ..., .exact = TRUE, .names = !.exact) expand_dots(..., .exclude = NULL)
x | input list |
---|---|
... | extra named arguments defining the default items. A list of default values can also be passed as a a single unnamed argument. |
.exact | logical that indicates if the names in |
.names | logical that only used when |
.exclude | optional character vector of argument names to exclude from expansion. |
a list
expand_dots
: expands the ...
arguments of the function
in which it is called with default values, using expand_list
.
It can only be called from inside a function.
#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $c #> [1] 3 #>#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $c #> [1] 4 #>#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $c #> [1] 3 #> #> $d #> [1] 10 #>#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $c #> [1] 5 #> #> $cd #> [1] 3 #>#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $cd #> [1] 5 #># partial match without expanding names expand_list(list(a=1, b=2, c=5), cd=3, .exact=FALSE, .names=FALSE)#> $a #> [1] 1 #> #> $b #> [1] 2 #> #> $c #> [1] 5 #># works also inside a function to expand a call with default arguments f <- function(...){ cl <- match.call() expand_list(cl, list(a=3, b=4), .exact=FALSE) } f()#> f(a = 3, b = 4)f(c=1)#> f(c = 1, a = 3, b = 4)f(a=2)#> f(a = 2, b = 4)f(c=1, a=2)#> f(c = 1, a = 2, b = 4)# expanding dot arguments f <- function(...){ expand_dots(list(a=2, bcd='a', xxx=20), .exclude='xxx') } # add default value for all arguments f()#> $a #> [1] 2 #> #> $bcd #> [1] "a" #># add default value for `bcd` only f(a=10)#> $a #> [1] 10 #> #> $bcd #> [1] "a" #># expand names f(a=10, b=4)#> $a #> [1] 10 #> #> $bcd #> [1] 4 #>