Expanding Lists

Description

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_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.

Usage

1
2
3
  expand_list(x, ..., .exact = TRUE, .names = !.exact)

  expand_dots(..., .exclude = NULL)

Arguments

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 x should be partially matched against the defaults.

.names

logical that only used when .exact=FALSE and indicates that the names of items in x that partially match some defaults should be expanded in the returned list.

.exclude

optional character vector of argument names to exclude from expansion.

Value

a list

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#----------
# expand_list
#----------
expand_list(list(a=1, b=2), c=3)
expand_list(list(a=1, b=2, c=4), c=3)
# with a list
expand_list(list(a=1, b=2), list(c=3, d=10))
# no partial match
expand_list(list(a=1, b=2, c=5), cd=3)
# partial match with names expanded
expand_list(list(a=1, b=2, c=5), cd=3, .exact=FALSE)
# partial match without expanding names
expand_list(list(a=1, b=2, c=5), cd=3, .exact=FALSE, .names=FALSE)

# 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(c=1)
f(a=2)
f(c=1, a=2)

#----------
# expand_dots
#----------
# expanding dot arguments

f <- function(...){
	expand_dots(list(a=2, bcd='a', xxx=20), .exclude='xxx')
}

# add default value for all arguments
f()
# add default value for `bcd` only
f(a=10)
# expand names
f(a=10, b=4)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.