[R] Ops method does not dispatch on either of two classes

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Dec 30 10:21:16 CET 2009


This is as documented on the help page for Ops (the page in base, not 
the one in Methods) which is linked from ?"|".  For background you 
should also read the reference on that help page.

You are wrong in asserting that the internal method is 'for logicals': 
please do study the help page.  It covers e.g. integer vectors which 
is what I suspect you have here (assuming this is something to do with 
package 'bit', unmentioned).

On Mon, 28 Dec 2009, Jens Oehlschlägel wrote:

> I have defined boolean methods for bit and bitwhich objects, for example
> |.bit <- function(e1,e2)
> and
> |.bitwhich <- function(e1,e2)
>
> Both methods coerce their arguments to the respective class, however 
> if I do something like
>
> bit_obj | bitwhich_obj
>
> then I get a warning
>
> Warning message:
> Incompatible methods ("|.bit", "|.bitwhich") for "|"
>
> and none of the two methods is called. Instead the (internal) method 
> for logicals seems to be called - not even coercing its arguments to 
> logical. Same problem with Ops.bit and Ops.bitwhich .
>
> What is the recommended way to get my methods reliably dispatched?

They are!  Take a look at what classes in R itself have S3 Ops methods 
and how they achieve what you seem to want via class inheritance.

> Jens Oehlschlägel
>
> ______________________________________________
> 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