I tried to do this a couple of years ago, cf. doCall() in R.utils. It's quite a tricky problem and I recall I wasn't perfectly happy with the solution but it's a start.
/Henrik On Jan 28, 2008 6:19 PM, hadley wickham <[EMAIL PROTECTED]> wrote: > Has anyone developed a version of do.call that is safe in the sense > that it silently drops parameters that do not appear in the formals of > the called function? This is useful when ... ends up being used in > multiple further functions. e.g. > > f <- function(a, b) {a + b} > do.call(f, list(a=1, b=2, c=3)) # Errors > safe.call(f, list(a=1, b=2, c=3)) # Returns 3 > > If have quickly thrown together the following, but it doesn't support > position based calls, and I'd like to avoid reinventing the wheel. > > safe.call <- function(f, params, f.params = names(formals(f))) { > if ("..." %in% f.params) { > safe.params <- params > } else { > safe.params <- params[intersect(f.params, names(params))] > } > do.call(f, safe.params) > } > > I hope to use safe.call to prevent a wide class of potential bugs in ggplot2. > > Hadley > > -- > http://had.co.nz/ > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel