[Rd] Same method for more than one class

Sean Davis sdavis2 at mail.nih.gov
Thu Mar 1 12:20:56 CET 2007


On Thursday 01 March 2007 06:18, Sean Davis wrote:
> On Thursday 01 March 2007 05:47, Gregor Gorjanc wrote:
> > Hi,
> >
> > when defining method (I used length bellow just for the simplicity) for
> > myClass (S4 class) I use
> >
> > setMethod(f="length", signature(x="myClass"),
> >           def=function(x) {
> >             cat("works")
> >           })
> >
> > If I have myClass1 and myClass2 and mentioned method, which is not the
> > default one, applies to both classes I have to write two setMethod()
> > statements. Would it be possible to use
> >
> > signature(x=c("myClass1", "myClass2"))
>
> Could you do:
>
> catFun <- function(x) {
>   cat("Works")
> }
> setMethod(f="length", signature(x="myClass1"),def=catFun)
> setMethod(f="length", signature(x="myClass2"),def=catFun)

That said, it your myclass1 and myclass2 are related, you may want to make 
them both subclasses of a virtual class.  You could then use that virtual 
class in the signature or anywhere you wanted common functionality for two or 
more classes.

Sean



More information about the R-devel mailing list