Re: [R] Re: S4 method inheritance

From: Ross Boylan <>
Date: Wed 25 May 2005 - 05:30:11 EST

On Tue, May 24, 2005 at 07:07:07AM -0400, Duncan Murdoch wrote:
> Ross Boylan wrote:
> >On Mon, 2005-05-23 at 14:41 -0700, Ross Boylan wrote:
> >....
> >
> >
> >>Finally, I'm a bit concerned that one article mentioned that S4
> >>inheritance, in practice, is used mostly for data, not methods (Thomas
> >>Lumley, R News 4(1), June 2004: p. 36). Am I going down a road I
> >>shouldn't travel?
> >>
> >
> >Hmm, maybe I just found out. If B is an S4 subclass of A (aka extends
> >A), how does B's method foo invoke A's foo?
> Your question doesn't make sense in S4. In S4, classes don't have
> methods, generics have methods. There's no such thing as "B's method"
> or "A's method".
Oops, I keep taking the references to "objects" too literally. Thanks.
> You might get what you want with foo(as(bObject, "A")) if bObject is an
> instance of class B.
> >The question assumes that A's foo was defined as an in place function,
> >so there's no (obvious) named object for it, i.e,
> >setMethod("A", signature(blah="numeric"), function(x) something)
There's my confusion: the first argument should be the name of the generic, not the class.
> I don't know what you mean by "in place function", but I hope my answer
> helps anyway.

Just for clarification, "in place function" was in contrast to a function defined elsewhere with an explicit name, e.g.,

   fforA<-function(x) something
   setMethod("foo", signature(blah="numeric"), fforA) In that case I could just refer to fforA directly. (Trying to avoid the S3ish f.A).

Is sounds as if the use of as() or callNextMethod() will get me what I want. And the docs seem clear that callNextMethod() returns control (and a value) to the calling function.

Thanks to everyone for their help. mailing list PLEASE do read the posting guide! Received on Wed May 25 05:33:48 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:32:01 EST