On Thu, Oct 28, 2010 at 9:31 AM, Mark Heckmann <[email protected]> wrote:
>
> How can I add a new method to the generic function "[" or "+"
>
> I want to create a S3 and S4 class that will use the "[" and "+" method in a
> different way.
> How can I overload the generic primitive "[" or "+" so the method dispatch
> will work correctly for my class?
>
> I saw an example of this in the ggplot2 package where different objects are
> joined using the "+" primitive.
> Still, I could not figure out how to do that.
>
> Can someone give a small code example to show how that works?
With S3 method stuff, to override "+" its as easy as writing Ops.{class}:
> a="hello"
> b="world"
> a+b
Error in a + b : non-numeric argument to binary operator
> class(a)="ss"
> class(b)="ss"
> Ops.ss=function(e1,e2){paste(e1,e2)}
> a+b
[1] "hello world"
better make sure I haven't broken anything:
> c=1
> d=2
> c+d
[1] 3 *phew*
The Ops function should really have a handler for all possible
operators (*, /, - etc) or fail with an error - see Ops.Date for
example.
With S4 classes... umm.. signatures... setMethod... setGeneric...
errr. something... representations... setClass this that... yeah.
Something like that.
Barry
______________________________________________
[email protected] 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.