Re: [R] problem with repeated formal arguments and ...

From: Sundar Dorai-Raj <sundar.dorai-raj_at_pdf.com>
Date: Fri 19 Aug 2005 - 04:45:37 EST

Ross Boylan wrote:
> I want to add an argument if it is not present. Following the Green
> Book, p. 337:
> test <- function(x, ...){
> dots <- list(...)
> if (!hasArg(from))
> from <- 0
> else
> from <- dots$from
> curve(x, from=from, ...)
> }
>
>

>>test(sin)
>>test(sin, from=4)

>
> Error in curve(x, from = from, ...) : formal argument "from" matched by
> multiple actual arguments
>
> The FAQ says, in the section on differences between R and S,
> "R disallows repeated formal arguments in function calls."
>
> That seems a perfectly reasonable rule, but how do I handle this
> situation?
>

Hi, Ross,

Add "from" to your function:

test <- function(x, from = 0, ...) {

   curve(x, from = from, ...)
}

Or another way:

test <- function(x, ...) {

   dots <- list(...)
   if(!hasArg(from)) dots$from <- 0
   dots$expr <- x
   do.call("curve", dots)
}

I actually prefer the latter if I'm changing many arguments. I do this quite often when writing custom lattice plots and I want to override many of the defaults.

HTH, --sundar



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Aug 19 04:57:25 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:39:53 EST