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
Post a Comment