On 25 Aug 2006, at 12:56, Prof Brian Ripley wrote: > Just like any other S4 method: > > setMethod("+", c("track", "track"), > function(e1, e2) new("track", x=c([EMAIL PROTECTED], [EMAIL > PROTECTED]), y=c > ([EMAIL PROTECTED],[EMAIL PROTECTED]))) > > If you want to write a group generic for the S4 Ops group, you do it > very like S3. There are worked examples in 'S Programming' (that > at least > at one point worked in R). >
I had a long train journey over the weekend and took S Programming with me. Most of my questions about S4 methods can be answered by reading chapters 4 and 5 over and over and over again, with occasional reference to the Green Book. ?SetMethod does not reference Venables & Ripley. Could this be added? > > 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 [EMAIL PROTECTED] == c(1,2,4,5,6) >> and >> [EMAIL PROTECTED] = 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@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel