[Rd] S4 methods for "+"

Martin Maechler maechler at stat.math.ethz.ch
Fri Aug 25 15:25:58 CEST 2006


>>>>> "BDR" == Prof Brian Ripley <ripley at stats.ox.ac.uk>
>>>>>     on Fri, 25 Aug 2006 12:56:17 +0100 (BST) writes:

    BDR> Just like any other S4 method: setMethod("+",
    BDR> c("track", "track"), function(e1, e2) new("track",
    BDR> x=c(e1 at x, e2 at x), y=c(e1 at y,e2 at y)))

    BDR> If you want to write a group generic for the S4 Ops
    BDR> group, you do it very like S3.  There are worked
    BDR> examples in 'S Programming' (that at least at one point
    BDR> worked in R).

Indeed.
The 'Matrix' package has examples for both:
Most of the time, we define group generics for "Arith",
but we have one method for "+" (for "dgTMatrix" operands, where
"+" can be done in particular way).

Inside a source version of Matrix, use 
    grep 'setMethod("Arith"'  R/*.R
or  grep 'setMethod("+"'  R/*.R
to find them.
Also look at NAMESPACE and R/AllGeneric.R

Martin Maechler, ETH Zurich

    BDR> On Fri, 25 Aug 2006, Robin Hankin wrote:

    >> Hi
    >> 
    >> I'm trying to implement S4 methods in a package, and I am
    >> having difficulty defining "+" to do what I want.
    >> 
    >> In the Green Book, there is a discussion of a "track"
    >> object,
    >> 
    >> setClass("track", representation(x="numeric",
    >> y="numeric"))
    >> 
    >> OK.
    >> 
    >> track1 <- new("track",x=c(1,4,6),y=c(10,11,12)) track2 <-
    >> new("track",x=c(2,5),y=c(100,101))
    >> 
    >> 
    >> What I want to do is to define "+" for track object so
    >> that if
    >> 
    >> track3 <- track1 + track2
    >> 
    >> has track3 at x == c(1,2,4,5,6) and track3 at y =
    >> c(10,100,11,101,12)
    >> 
    >> maybe adding a track object to a scalar would shift the
    >> values of the x slot.
    >> 
    >> The algorithm itself is no problem...but what is the S4
    >> equivalent to the S3 technique of writing an Ops.track()
    >> function that tells R what "+" means?
    >> 
    >> 
    >> 
    >> 
    >> 
    >> 
    >> 
    >> 
    >> 
    >> --
    >> Robin Hankin Uncertainty Analyst National Oceanography
    >> Centre, Southampton European Way, Southampton SO14 3ZH,
    >> UK tel 023-8059-7743
    >> 
    >> ______________________________________________
    >> R-devel at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel
    >> 

    BDR> -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of
    BDR> Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
    BDR> University of Oxford, Tel: +44 1865 272861 (self) 1
    BDR> South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG,
    BDR> UK Fax: +44 1865 272595

    BDR> ______________________________________________
    BDR> R-devel at r-project.org mailing list
    BDR> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list