Generación de funciones; cambiar los valores predeterminados de otras funciones (parcial)

Tengo la necesidad de un generador de funciones que tome otra función y cualquier argumento de esa función y establezca nuevos valores predeterminados. Pensé en @ hadleypryr::partial Fue esa función mágica. Hace exactamente lo que quiero, excepto que no puedes cambiar ese nuevo valor predeterminado. Entonces aquí puedo cambiarsep en mi nuevopaste función pero no el nuevo valor predeterminado decollapse = "_BAR_". Como puedo hacerpartial realizar de esta manera (es decir, predeterminado acollapse = "_BAR_" pero habilite configurarlo encollapse = NULL Si es deseado)? Si esto no es posible conpartial ¿hay alguna manera de reescribir el código parapartial para hacer esto:https://github.com/hadley/pryr/blob/master/R/partial.r

library(pryr)
.paste <- pryr::partial(paste, collapse = "_FOO_")

.paste(1:5)
.paste(1:5, LETTERS[1:5], sep="_BAR_")
.paste(1:5, collapse=NULL)

> .paste(1:5)
[1] "1_FOO_2_FOO_3_FOO_4_FOO_5"

> .paste(1:5, LETTERS[1:5], sep="_BAR_")
[1] "1_BAR_A_FOO_2_BAR_B_FOO_3_BAR_C_FOO_4_BAR_D_FOO_5_BAR_E"

> .paste(1:5, collapse=NULL)
Error in paste(collapse = "_FOO_", ...) : 
  formal argument "collapse" matched by multiple actual arguments

Respuestas a la pregunta(3)

Su respuesta a la pregunta