r - Function generation; change defaults of other functions (partial) -


i have need function generator takes function , arguments of function , sets new defaults. thought @hadley's pryr::partial magic function. want except can't change new default. here can change sep in new paste function not new default of collapse = "_bar_". how can make partial perform way (i.e., default collapse = "_bar_" enable setting collapse = null if desired)? if not possible partial there way rewrite code partial this: 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 multiple actual arguments 

partial fixing parameter values, if want change defaults, might consider different strategy. work

.paste <- paste formals(.paste)$collapse <- "_foo_" 

this changes parameters function

args(.paste) # function (..., sep = " ", collapse = "_foo_")  # null 

then can do

.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) # [1] "1" "2" "3" "4" "5" 

Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

python - Django-cities exits with "killed" -

python - How to get a widget position inside it's layout in Kivy? -