From l@wrence@mich@el @ending from gene@com  Thu May 24 18:20:10 2018
From: l@wrence@mich@el @ending from gene@com (Michael Lawrence)
Date: Thu, 24 May 2018 09:20:10 -0700
Subject: [Rd] Creating S3 methods for S4 classes (coming from
 r-package-devel)
In-Reply-To: <CAO1zAVZUQukdm1Dr-428wDZ-g-ySgsTByKv-XUZ8cJihi0+Oyw@mail.gmail.com>
References: <CAO1zAVZUQukdm1Dr-428wDZ-g-ySgsTByKv-XUZ8cJihi0+Oyw@mail.gmail.com>
Message-ID: <CAOQ5NydMkLr9NP-Q+BZUyA=1seT-_t5khnXbe7uh0e1qn+7xsQ@mail.gmail.com>

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
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.

Michael

On Thu, May 24, 2018 at 6:39 AM, Joris Meys <jorismeys at gmail.com> wrote:
>  Dear all,
>
> I asked this question on r-package-devel but Martin Maechler pointed out
> this was more suited on R-devel. So here it goes:
>
> per the manual, one should create and register both the S3 and a S4 method
> if one needs a method for an S4 class for a function using S3 dispatching.
> This is cumbersome, and not very optimal.
>
> I was wondering if there's a better way to do this. Currently I recreate a
> generic in my package and create a default method that sends all the other
> classes to the S3 generic, eg:
>
> setGeneric("predict")
> setMethod("predict", "ANY", stats::predict)
>
> I'm not sure if this hasn't any adverse consequences, as it is not the
> recommended approach.
>
> It would be great if these generics could be made available through stats4.
> If this would be the prefered route, I volunteer to create the patch for
> that.
>
> Any thoughts?
> Cheers
> Joris
>
> (Original mail on r-package-devel :
> https://stat.ethz.ch/pipermail/r-package-devel/2018q2/002757.html )
>
>
> --
> 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]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



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