From jori@mey@ @ending from gm@il@com  Thu May 24 19:47:06 2018
From: jori@mey@ @ending from gm@il@com (Joris Meys)
Date: Thu, 24 May 2018 19:47:06 +0200
Subject: [Rd] Creating S3 methods for S4 classes (coming from
 r-package-devel)
In-Reply-To: <CAOQ5NydMkLr9NP-Q+BZUyA=1seT-_t5khnXbe7uh0e1qn+7xsQ@mail.gmail.com>
References: <CAO1zAVZUQukdm1Dr-428wDZ-g-ySgsTByKv-XUZ8cJihi0+Oyw@mail.gmail.com>
 <CAOQ5NydMkLr9NP-Q+BZUyA=1seT-_t5khnXbe7uh0e1qn+7xsQ@mail.gmail.com>
Message-ID: <CAO1zAVY8Bvwfwq80b7Pk5-2dnpdwGCtw7MXf9_izPgkEa_chKg@mail.gmail.com>

On Thu, May 24, 2018 at 6:20 PM, Michael Lawrence <lawrence.michael at gene.com
> wrote:

> You only have to make an S4 method if there is already an S4 generic.
> If there is just an S3 generic, then just define S3 methods on it.


I was refering to the recommendations in ?Methods_for_S3 (
https://stat.ethz.ch/R-manual/R-devel/library/methods/html/Methods_for_S3.html).
:

"Two possible mechanisms for implementing a method corresponding to an S4
class, there are two possibilities are to register it as an S3 method with
the S4 class name or to define and set an S4 method, which will have the
side effect of creating an S4 generic version of this function.

For most situations either works, but the recommended approach is to do
both:"

The reasoning is described there as well, and I have no reason to believe
that information is not up to date. I can get away with defining an S3
generic, but this stops being useful when using superclasses for reasons
mentioned in the documentation.

I
> think we should stay away from defining S4 generics when there is no
> good reason for them. Good reasons include multiple dispatch, or a
> non-default signature. Neither of those apply in this case.
>

I would personally prefer to use dispatching that's tailored to the type of
class I work with, as that seems more consistent. But I agree we should
avoid defining generics for the same function in different packages, hence
my proposal about stats4.


-- 
Joris Meys
Statistical consultant

Department of Data Analysis and Mathematical Modelling
Ghent University
Coupure Links 653, B-9000 Gent (Belgium)
<https://maps.google.com/?q=Coupure+links+653,%C2%A0B-9000+Gent,%C2%A0Belgium&entry=gmail&source=g>

-----------
Biowiskundedagen 2017-2018
http://www.biowiskundedagen.ugent.be/

-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php

	[[alternative HTML version deleted]]



[Rd] Creating S3 methods for S4 classes (coming from r-package-devel)
Joris Meys