[R] showMethods()! Re: How to find S4 generics?

From: Martin Maechler <maechler_at_stat.math.ethz.ch>
Date: Thu 20 Jul 2006 - 17:55:22 EST

>>>>> "SpG" == Spencer Graves <spencer.graves@pdf.com> >>>>> on Wed, 19 Jul 2006 15:23:58 -0700 writes:

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

Hmm, ?methods has been containing for a while

methods> Note:
methods> 
methods>    This scheme is called _S3_ (S version 3).  For new projects, it is
methods>    recommended to use the more flexible and robust _S4_ scheme
methods>    provided in the 'methods' package.  Functions can have both S3 and
methods>    S4 methods, and function 'showMethods' will list the S4 methods
methods>    (possibly none).

So I wonder why nowbody mentioned the official

  showMethods()

  (or are you all not reading the help pages ;-\) )

It does not always return / print what I want exactly, and in the past, at one point I put some effort to make its output more customizable.
I didn't put that effort to the end (*)
but for the present case

    showMethods(class = "ddiMatrix", where = "package:Matrix")

at least is pretty useful.

(*) I think I had added the 'showEmpty = TRUE' argument

     where the current documentation says

 showM>   showEmpty: logical indicating if methods with empty
 showM>              method lists should be shown at all.  
 showM>     Note that 'FALSE' is _not yet implemented_.

and the non-implementation had a reason: implementation was definitely much less simple than I had hoped ...

Martin

    SpG> 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@.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@u.washington.edu University of Washington,
>> Seattle
>>
>> ______________________________________________
>> R-help@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.
    SpG> ______________________________________________
    SpG> R-help@stat.math.ethz.ch mailing list
    SpG> https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do
    SpG> read the posting guide

    SpG> http://www.R-project.org/posting-guide.html and provide     SpG> commented, minimal, self-contained, reproducible code.

R-help@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. Received on Thu Jul 20 18:00:54 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 21 Jul 2006 - 02:17:48 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.