The ... syntax of base R allows you to:
Forward arguments from function to function, matching them along the way to function parameters.
Collect arguments inside data structures, e.g. with c() or
list().
Dynamic dots offer a few additional features:
If your function takes dots, adding support for dynamic features is
as easy as collecting the dots with list2() instead of list().
Other dynamic dots collectors are dots_list(), which is more
configurable than list2(), vars() which doesn't force its
arguments, and call2() for creating calls.