[R] S4 classes and debugging - Is there a summary?

Martin Maechler maechler at stat.math.ethz.ch
Fri Jul 2 17:33:45 CEST 2010


>>>>> Martin Morgan <mtmorgan at fhcrc.org>
>>>>>     on Fri, 02 Jul 2010 07:01:54 -0700 writes:

    > On 07/02/2010 05:05 AM, Joris Meys wrote:
    >> Dear all,
    >> 
    >> I'm getting more and more frustrated with the whole S4 thing and I'm
    >> looking for a more advanced summary on how to deal with them. Often I
    >> get error messages that don't make sense at all, or the code is not
    >> doing what I think it would do. Far too often inspecting the code
    >> requires me to go to the source, which doesn't really help in easily
    >> finding the bit of code you're interested in.
    >> 
    >> Getting the code with getAnywhere() doesn't always work. Debug()
    >> doesn't work. Using trace() and browser() is not an option, as I can't
    >> find the correct method.
    >> 
    >> eg :
    >> library(raster)
    >>> getAnywhere(xyValues)
    >> A single object matching ‘xyValues’ was found
    >> It was found in the following places
    >> package:raster
    >> namespace:raster
    >> with value
    >> 
    >> standardGeneric for "xyValues" defined from package "raster"
    >> 
    >> function (object, xy, ...)
    >> standardGeneric("xyValues")
    >> <environment: 0x04daf14c>
    >> Methods may be defined for arguments: object, xy
    >> Use  showMethods("xyValues")  for currently available ones.

    >>> showMethods("xyValues")
    >> Function: xyValues (package raster)
    >> object="Raster", xy="data.frame"
    >> object="Raster", xy="SpatialPoints"
    >> object="Raster", xy="vector"
    >> object="RasterLayer", xy="matrix"
    >> object="RasterStackBrick", xy="matrix"
    >> 
    >> And now...?

        > selectMethod(xyValues, c('RasterLayer', 'matrix'))

    > would be my choice.

Yes.  Alternatively,  asking  showMethods() to show *all*
methods directly, can sometimes
be even quicker in revealing things:
I.e.,
	showMethods("xyValues", incl=TRUE)
is often
what I use.

Martin Maechler, ETH Zurich


    >> Is there an overview that actually explains how you get the
    >> information you're looking for without strolling through the complete
    >> source? Sorry if I sound frustrated, but this is costing me huge
    >> amounts of time, to that extent that I rather write a custom function
    >> than use one in an S4 package if I'm not absolutely sure about what it
    >> does and how it achieves it.

    > I don't really have the right experience, but Chamber's 2008 Software
    > for Data Analysis... and Gentleman's 2008 R Programming for
    > Bioinformatics... books would be where I'd start. ?Methods and ?Classes
    > are I think under-used.

    > Martin
    >> 
    >> Cheers
    >> Joris



    > -- 
    > Martin Morgan
    > Computational Biology / Fred Hutchinson Cancer Research Center
    > 1100 Fairview Ave. N.
    > PO Box 19024 Seattle, WA 98109

    > Location: Arnold Building M1 B861
    > Phone: (206) 667-2793



More information about the R-help mailing list