Duncan Murdoch wrote: > I'm writing wrappers for some functions that change some of the default > arguments. I'd rather not list all of the arguments for the low level > functions because there are about a dozen wrapper functions, and about > 20 arguments to lowlevel. Instead I'm trying something like this: > > lowlevel <- function(longname = 1) { > cat("longname = ", longname, "\n") > } > > wrapper <- function(...) { > newargs <- list(longname = 2) > newargs[names(list(...))] <- list(...) > do.call("lowlevel", newargs) > } > > This almost works: > > > wrapper() > longname = 2 > > wrapper(longname = 3) > longname = 3 > > But it fails if I try to use partial argument matching: > > > wrapper(long=4) > Error in lowlevel(longname = 2, long = 4) : > unused argument(s) (long ...) > > because long isn't matched to longname. Is there a reasonable way to do > this (e.g. using pmatch or charmatch) other than listing all the low > level arguments in the argument list to wrapper? > > Duncan Murdoch
If all you are doing is changing the default values of some arguments this should work. wrapper <- lowlevel formals(wrapper) <- replace(formals(lowlevel), c("longname"), list(2)) Charles ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel