Re: [Rd] match gets confused by S4 objects

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Mon 06 Feb 2006 - 19:44:50 GMT

An S4 object is just a list with attributes, so a vector type. match() works with all vector types including lists, as you found out (or could have read).

If in the future those proposing it do re-implement an S4 object as an new SEXP then this will change, but for now the cost of detecting objects which might have an S4 class defined somewhere is just too high (and would fall on those who do not use S4 classes).

On Mon, 6 Feb 2006, Seth Falcon wrote:

> If one accidentally calls match(x, obj), where obj is any S4 instance,
> the result is NA.
>
> I was expecting an error because, in general, if a match method is not
> defined for a particular S4 class, I don't know what a reasonable
> default could be. Specifically, here's what I see
>
> setClass("FOO", representation(a="numeric"))
> foo <- new("FOO", a=10)
> match("a", foo)
> [1] NA
>
> And my thinking is that this should be an error, along the lines of
> match("a", function(x) x)
>
> Unless, of course, a specific method for match, table="FOO" has been
> defined.

-- 
Brian D. Ripley,                  ripley@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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Feb 07 06:51:16 2006

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:40 GMT