[Rd] S4 group generic Complex not working (PR#4483)

John Chambers jmc at research.bell-labs.com
Thu Oct 9 15:46:50 MEST 2003


Prof Brian Ripley wrote:
> 
> On Thu, 9 Oct 2003 saikat at stat.wisc.edu wrote:
> 
> > The Complex group generic for S4 methods is not working:
> >
> >  > setClass('foo', representation(z='complex'))
> > [1] "foo"
> >  > setMethod('Complex', 'foo', function(z) callGeneric(z at z))
> > [1] "Complex"
> >  > Arg(new('foo', z=1+0i))
> > Error in Arg(new("foo", z = 1 + (0+0i))) :
> >          non-numeric argument to function
> >  >
> 
> > The fix is to add
> >
> >      if (DispatchGroup("Complex", call, op, args, env, &x))
> >       return x;
> >
> > near the beginning of do_cmathfuns in complex.c.

For arguments that might have methods, DispatchGroup first tries to
dispatch an S4 method, then if none is found goes on to look for an S3
method.

The choice would seem to be:  (1) allow both S4 and S3 group methods for
Complex (& revise current documentation); or (2) special-case the code
in DispatchGroup to skip S3 methods when argument `group' matches
"Complex".

Preferences?

John

> 
> I don't think that's right: that would set up an S3 group generic
> Complex, and there is no such thing.  That's not how S4 group generics are
> implemented, according to ?Complex.
> 
> --
> 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
> 
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list