[Rd] Documenting S4 classes; debugging them

John Chambers
Fri, 23 May 2003 21:38:24 -0000

Duncan Murdoch wrote:
>
> 1.  I'm putting together my first package that uses S4 classes and
> objects.  I'd like to document them, but I'm not sure what the
> documentation should look like, and package.skeleton doesn't produce
> any at all for the classes or methods.

Hmm, sounds as if it should.

Meanwhile, promptClass and promptMethods generate skeleton
documentation.


>
> Are there any good examples to follow?

The bioconductor packages (e.g, Biobase) have some examples.

>
> 2.  How do I do the equivalent of debug(foo), when foo is an anonymous
> function being used as a method?

The S4-style trace() function allows you to insert debugging functions
(or any expressions) into functions; it has a `signature' argument that
causes the debugging to be inserted into the method with the
corresponding signature.

Usually either `browser' or `recover' are suitable functions to insert.

My canonical piece of debugging code is along the lines of:

   trace("f", signature = "numeric", browser, exit =
browser)

If you are really attached to debug(), you can insert an extra level of
function call; i.e., instead of:

  fNumeric <- function(x)x+1
  setMethod("f", "numeric", fNumeric)

and then the call to trace, do
  setMethod("f", "numeric", function(x)fNumeric(x))
  debug(fNumeric)

But trace() is more flexible, though requiring a bit more typing.

John

>
> Duncan Murdoch
>
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-devel

--
John M. Chambers                  jmc@bell-labs.com
Bell Labs, Lucent Technologies    office: (908)582-2681
700 Mountain Avenue, Room 2C-282  fax:    (908)582-3340
Murray Hill, NJ  07974            web: http://www.cs.bell-labs.com/~jmc