Maybe this function won't actually be the help I had hoped it would
be.  Unfortunately some functions (e.g. glm via glm.control) throw
errors when ... contain arguments that don't match some (eventual)
argument list.

Or is this a bug in glm?  It certainly seems that the documentation
should mention that ... is passed to glm.control, which only takes
three arguments.  I realise that this doesn't come up very often
during an interactive model fitting session, and it is easy to remedy
when it does, but it makes writing robust functions hard when a
function with ... does in fact have a fixed argument list.

Hadley

On Jan 28, 2008 8: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/
>



-- 
http://had.co.nz/

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to