我需要一个函数生成器,它接受另一个函数和该函数的任何参数并设置新的默认值。我认为@hadley'spryr::partial
就是那个神奇的功能。它完全符合我的要求,只是你不能更改新的默认值。所以在这里我可以更改sep
我的新paste
功能,但不能更改新的默认值collapse = "_BAR_"
。我怎样才能以partial
这种方式执行(即,默认为collapse = "_BAR_"
但collapse = NULL
如果需要,可以将其设置为)?如果这是不可能的,partial
有没有办法重写代码partial
来做到这一点: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