[R] Does anyone else think this might be worth a warning?!?

Adaikalavan Ramasamy ramasamy at cancer.org.uk
Sun Aug 19 14:48:45 CEST 2007

First, note that functions in R match named arguments first, followed by 
the position of the arguments in the call.

Second, have a look at how mean and max are defined

    mean <- function (x, trim = 0, na.rm = FALSE, ...){

    max <- function (..., na.rm = FALSE){

It's the difference in the position of "..." argument or catchall 
argument (sorry, I don't know its formal name) that determines the 
different behaviour. The "..." is often converted to a list internally.

So when you type in mean(1,1,2), it is treated as
  "mean( x=1, trim=1, na.rm=2 )".

and when you type in max(1,1,2), it is treated as
  "max( as.list(1,1,2), na.rm = FALSE )"

However, you do raise a good point. Reading mean.default(), I do not see 
how and when the "..." argument in mean() comes to play. Perhaps 
redefine mean to be mean <- function (..., trim = 0, na.rm = FALSE) so 
that it is similar to max, sum, range etc.

But there might be a philosopphical counter argument for this as well. 
Functions like mean() and sd() are supposed to summarise a single vector 
whereas max, sum, range can work on several vectors by concatenating 
them into a single list. Consider max( c(1,2,3), c(2,3,4) ).

Regards, Adai

Matthew Walker wrote:
> Hi,
> I was *very* surprised by this little trick for new players: mean() only 
> considers its first argument!
>  > mean(1,1,2)
> [1] 1
>  > mean(2,1,1)
> [1] 2
> I found this very different behaviour to max():
>  > max(1,1,2)
> [1] 2
>  > max(2,1,1)
> [1] 2
> Perhaps this is the wrong list to ask, but does anyone else think this a 
> little on the interesting side?  Is it not possible to detect a first 
> argument of length one in the presence of other un-named arguments and 
> at least produce a warning?
> Cheers,
> Matthew
> ______________________________________________
> R-help at 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
> and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list