From j|ox @end|ng |rom mcm@@ter@c@  Tue Jun 18 17:28:36 2019
From: j|ox @end|ng |rom mcm@@ter@c@ (Fox, John)
Date: Tue, 18 Jun 2019 15:28:36 +0000
Subject: [Rd] Could generic functions check different S3 methods for an
 object when one of them produces an error?
In-Reply-To: <2099_1560870679_x5IFBIWA007940_DB6PR02MB31272F107C5F54FE88D63B9592EB0@DB6PR02MB3127.eurprd02.prod.outlook.com>
References: <2099_1560870679_x5IFBIWA007940_DB6PR02MB31272F107C5F54FE88D63B9592EB0@DB6PR02MB3127.eurprd02.prod.outlook.com>
Message-ID: <2E47F9C5-9C46-4BFB-9260-FB7ABB5FAE3C@mcmaster.ca>

Dear Iago,

The R S3 object system works as expected here, using the first available method processing the class vector from left to right. The problem is that the broom package doesn't export the confint.geeglm() method but rather reserves it for internal use. I can't think why the package authors chose to do that but you could ask them. The following therefore works (following on with your example):

> confint.geeglm <- broom:::confint.geeglm
> confint(geefit)
                    lwr         upr
(Intercept) 3607.595981 5204.790222
Frost         -2.723317    6.097207
Murder       -84.166856   38.838155

I hope this helps,
 John

  -------------------------------------------------
  John Fox, Professor Emeritus
  McMaster University
  Hamilton, Ontario, Canada
  Web: http::/socserv.mcmaster.ca/jfox

> On Jun 17, 2019, at 3:56 AM, IAGO GIN? V?ZQUEZ <i.gine at pssjd.org> wrote:
> 
> Hi,
> 
> 
> Let's say one has an object with multiple classes, and a generic function to apply to it has associated S3 methods for more than one of those classes. Further, the method it chooses (I do not know how; some order in the class vector?) is not the suitable one and it produces an error. Would there be some way to make the generic function to choice the correct method, or in case that for any method taken it produces an error, to try another one.
> 
> 
> For example (commented in detail here<https://github.com/tidymodels/broom/issues/714>):
> 
> 
> # object with multiple classes: the output of function `geepack::geeglm`. The output of `class(object)`:
> 
> ```
> 
> [1] "geeglm" "gee" "glm" "lm"
> 
> ```
> 
> The generic function: `stats::confint`.
> 
> The S3 method chosen: `confint.glm`. It produces an error. The correct method in this case would be `broom:::confint.geeglm`.
> 
> 
> Thank you!
> 
> Iago
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Could generic functions check different S3 methods for an object when one of them produces an error?
Fox, John