[Rd] A "safe" do.call
hadley wickham
h.wickham at gmail.com
Tue Jan 29 03:19:58 CET 2008
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/
More information about the R-devel
mailing list