[R] Overloading %*%

Martin Morgan mtmorgan at fhcrc.org
Mon Mar 17 03:43:11 CET 2008


Spencer Graves wrote:
> Thanks, Ken. 
> 
>       1.  How can I find S4 methods for a given function given class(es) 
> of objects?  The 'showMethods' function lists available generics for a 
> given function;  "showMethods('%*%')" just produced for me a list of 52 
> different signatures for "%*%".  However, I don't know how to find the 
> functions with methods for a particular class.  The 'methods' function 

Use the 'classes' argument to showMethods, either with or without a 
function as first argument.

> will produce either S3 methods for a given function or S3 functions for 
> a given class.  It would help me if the 'methods' help page included 
> "See Also" and "Examples" for S4 classes also, but it doesn't. 
> 
>       2.  How can I find source code for S4 methods?  I tried 

use includeDef=TRUE with showMethods, or getMethod to get a specific 
method, or, for some fun, selectMethod to find the method to which 
object dispatch occurs. I'm not sure how to dump the method to a file.

Martin

> "dumpMethods('%*%', 'mmult.R')" and got an apparently empty file of 0 
> KB.  Then I tried 'dumpMethod("%*%", c(x="TsparseMatrix", y="ANY"))' and 
> got a file with the following: 
> 
> setMethod("%*%", structure(c("TsparseMatrix", "ANY"), .Names = c("x", "y")),
> NULL
> )
> 
>       Thanks again for your reply regarding "%*%". 
>       Spencer Graves   
> 
> knoblauch wrote:
>> Joe Cainey <jcainey <at> gmail.com> writes:
>>   
>>> Is it possible to supply a new method for the %*% operator? 
>>>     
>> clipped
>>   
>>> I've tried to do the same thing with %*%:
>>>
>>> "%*%.ad" <- function(a,b)
>>> {
>>>     # further code here
>>> }
>>> However this doesn't work; the new method is never called and the standard
>>> %*% operator is used instead. I've had a look at the documentation and it
>>> appears to be because the %*% operator is not part of the "Math", "Ops",
>>> "Summary" or "Complex" groups. I was wondering if anybody knew of a
>>> work-around for this?
>>>     
>> According to the help page for %*%, it is S4 generic but not S3, so
>> you might make further progress using S4 methods.
>>
>>   
>>> Thanks,
>>>
>>> Joe Cainey
>>>
>>>     
>> best,
>>
>> Ken
>>
>> ______________________________________________
>> R-help at r-project.org 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.
>>
> 
> ______________________________________________
> R-help at r-project.org 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