[R] Simple methods question

Jan T. Kim jtk at cmp.uea.ac.uk
Thu Apr 21 18:02:48 CEST 2005


On Thu, Apr 21, 2005 at 04:35:07PM +0100, Jan T. Kim wrote:
> On Thu, Apr 21, 2005 at 03:00:07PM +0200, Uwe Ligges wrote:
> > Sean Davis wrote:
> > 
> > >I would like to create a function with methods with the same behavior 
> > >for both numeric and logical arguments (using S4 methods) and different 
> > >for matrix.
> > >
> > >I would typically do:
> > >
> > >setGeneric('foo',function(x) standardGeneric('foo'))
> > >setGeneric('foo','numeric',function(x) {...stuff 1...})

[...]

> > >setGeneric('foo','logical',function(x) {...stuff 1...})
> > >setGeneric('foo','matrix',function(x) {....stuff 2...})
> > >
> > >If "stuff1" is identical for numeric and logical, can the two 
> > >setGenerics be "combined" somehow?
> > 
> > Maybe using (implicit) inheritance?
> 
> If the main point is to avoid duplication of the ...stuff 1... code,
> I'd suggest assigning that function to an identifier and using that in
> the setMethod calls, as in
> 
>     stuff1 <- function(x)
>     {
>       ...stuff 1...
>     }
> 
> 
>     stuff2 <- function(x)
>     {
>       ...stuff 2...
>     }
> 
>     setMethod('foo', 'numeric', stuff1);
>     setMethod('foo', 'logical', stuff1);
>     setMethod('foo', 'matrix', stuff1);
                                 ^^^^^^
Just to avoid any possible confusion: This should have been "stuff2", of
course.

Sorry for this fumble.

Best regards, Jan
-- 
 +- Jan T. Kim -------------------------------------------------------+
 |    *NEW*    email: jtk at cmp.uea.ac.uk                               |
 |    *NEW*    WWW:   http://www.cmp.uea.ac.uk/people/jtk             |
 *-----=<  hierarchical systems are for files, not for humans  >=-----*




More information about the R-help mailing list