[R] How to find S4 generics?

Spencer Graves spencer.graves at pdf.com
Thu Jul 20 00:23:58 CEST 2006


Hi, Thomas:  Thanks very much.  I haven't tried it yet, but it looks 
very useful.  Best Wishes, Spencer Graves

Thomas Lumley wrote:
> On Wed, 19 Jul 2006, Spencer Graves wrote:
>> 	  Am I correct then that the 'methods' function could, at least
>> theoretically, be revised so methods(class=...) could identify both S3
>> and S4 methods (ignoring inheritance, as it does now, I believe)?
>>
> 
> Here is a function to find methods for a formal class. It returns a list 
> with elements corresponding to a generic, and each element is a list of 
> strings showing all the signatures that contain any of the specified 
> classes.
> 
> If super=TRUE it looks at all superclasses, if ANY=TRUE it also returns 
> methods for ANY class.
> 
> If you have lme4 loaded, try
>    methods4("lmer"
>    methods4("ddiMatrix")
>    methods4("ddiMatrix",super=TRUE)
> 
>  	-thomas
> 
> methods4<-function(classes, super=FALSE, ANY=FALSE){
>    if (super) classes<-unlist(sapply(classes, function(cl) getAllSuperClasses(getClass(cl))))
>    if (ANY) classes<-c(classes,"ANY")
>    gens<-allGenerics()@.Data
>    sigs<-lapply(gens, function(g) linearizeMlist(getMethods(g))@classes)
>    names(sigs)<-gens at .Data
>    sigs<-lapply(sigs, function(gen){ gen[unlist(sapply(gen, function(sig) any(sig %in% classes)))]})
>    sigs[sapply(sigs,length)>0]
> }
> 
> 
> Thomas Lumley			Assoc. Professor, Biostatistics
> tlumley at u.washington.edu	University of Washington, Seattle
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list