From jhibschman at gmail.com  Mon Jan 24 17:01:18 2011
From: jhibschman at gmail.com (Johann Hibschman)
Date: Mon, 24 Jan 2011 10:01:18 -0600
Subject: [Rd] setGeneric for residuals, etc
References: <u1ok4hzfvi5.fsf@lx-chrateresearch01.citadelgroup.com>
	<4d39774c.825bdf0a.5ca4.ffffa40a@mx.google.com>
Message-ID: <u1ozkqqqoj5.fsf@lx-chrateresearch01.citadelgroup.com>

"Janko Thyson" <janko.thyson.rstuff at googlemail.com> writes:

>> I'm experimenting with a few model-fitting classes of my own.  I'm
>> leaning towards using S4 for my classes, but the R functions I'd want
>> to override (residuals, predict, etc.) are all S3 methods.

> For example, inside your method for 'residuals()', you will
> probably just get some data out of a slot of your object and run the S3
> function 'residuals(your.slot.data)'. So there's nothing that should make
> you nervous in that respect, you're not overwriting anything with your
> method. Setting a generic for an existing function is just a necessary step
> in order to specify S4 methods for it. 

Yes, I understand that it's a necessary step in R, but I'm still puzzled
as to why it's necessary.  (And by "why", I don't mean the technical
point that 'residuals' is not an S4 generic function; I mean why isn't
it a S4 generic function already?)

In principle, R could be shipped with all S3 functions replaced by S4
functions that default to the S3 implementation.  That would be a
benefit to everyone writing S4 objects.  The fact that it's not been
done seems to imply it would have a cost to people writing S3 objects,
so I'm trying to understand what that cost is.

Perhaps I'm seeing an implied risk where I really should be seeing a
loose federation of developers with disparate interests, and the slow
pace of "global" change that implies.

Thanks,
Johann



[Rd] setGeneric for residuals, etc
Johann Hibschman