[R] variable names when using S3 methods

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Apr 28 14:43:19 CEST 2008


options(warnPartialMatchArgs=TRUE) is available to those who do regrets, 
e.g.

> options(warnPartialMatchArgs=TRUE)
> fooA("hi",m=1)
foo.default: m is 1
Warning message:
In fooA("hi", m = 1) : partial argument match of 'm' to 'model'


On Mon, 28 Apr 2008, Peter Dalgaard wrote:

> Aaron Rendahl wrote:
>> I'm seeing some funny behavior when using methods (the older S3 type)
>> and having variables that start with the same letter.  I have a vague
>> recollection of reading something about this once but now can't seem
>> to find anything in the documentation.  Any explanation, or a link to
>> the proper documentation, if it does exist, would be appreciated.
>>
>> Thanks, Aaron Rendahl
>> University of Minnesota School of Statistics
>>
>>
>> # set up two function that both use method "foo" but with different
>> variable names
>> fooA<-function(model,...)
>>     UseMethod("foo")
>> fooB<-function(Bmodel,...)
>>     UseMethod("foo")
>>
>> # now set up two methods (default and character) that have an
>> additional variable
>> foo.character <- function(model, m=5,...)
>>     cat("foo.character: m is", m, "\n")
>> foo.default <- function(model, m=5,...)
>>     cat("foo.default: m is", m, "\n")
>>
>> # both of these use foo.character, as expected
>> fooA("hi")
>> fooB("hi")
>>
>> # but here, fooA uses foo.default instead
>> fooA("hi",m=1)
>> fooB("hi",m=1)
>>
>> # additionally, these use foo.character, as expected
>> fooA("hi",1)
>> fooA(model="hi",m=1)
> This is partial matching on argument names, a feature regretted by its
> designers, but a feature nevertheless.
>
> It has nothing to do with S3 as such, it is just that fooA("hi",m=1)
> matches "m" to "model" and believes that you meant fooA("hi", model=1).
>
> It often bites people in S3 methods though, because in most other cases,
> you can put the arguments after "..." where they require exact matching
> (consider the naming forms of c() and cbind(), for instance).
>
> --
>   O__  ---- Peter Dalgaard             Øster Farimagsgade 5, Entr.B
>  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
> (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)              FAX: (+45) 35327907
>
> ______________________________________________
> R-help at r-project.org 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.
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


More information about the R-help mailing list