Как правило, рекомендуется помещать аргументы со значениями по умолчанию после точек:
f <- function( ..., dat=mtcars )
dplyr::select( dat, ... )
f(cyl) # Works
f(dat=iris, Species) # Also works
Если ваш API не позволяет размещать именованные аргументы по умолчанию после точки, вот еще одна альтернатива. Обратите внимание, что вам не нужно явно указывать именованные аргументы со значениями по умолчанию. Вы можете просто оставить их «отсутствующими»:
foo(, cyl) # Same as foo( dat=mtcars, cyl )
Если у вас много аргументов по умолчанию, и вы не хотите вводить кучу запятых в своих вызовах, вы можете использовать purrr::partial()
, чтобы записать этот шаблон в автономную функцию:
foo2 <- purrr::partial(foo, ,) # Effectively partial(foo, dat=mtcars)
foo2(cyl) # Works
Если для этого по-прежнему требуется вводить больше запятых, чем вы предпочитаете, вы можете добавить еще один шаг:
foo3 <- purrr::partial( foo, !!!purrr::keep(formals(foo), nzchar) )
foo3(cyl, mpg) # Also works