On Thu, Oct 28, 2010 at 12:14 PM, Christofer Bogaso
<[email protected]> wrote:
> Dear Barry, this is really interesting. However I could not understand
> this line:
>
> Ops.ss=function(e1,e2){paste(e1,e2)}
>
> Where you have told R to behave "+" function differently when it faces
> "ss" class?
> What should be the ideal approach if I what to use "*" function?
You can get the character string of the operator from '.Generic', for example:
Ops.ss=function(e1,e2){
if(.Generic=="+"){
return(paste(e1,e2))
}
if(.Generic=="*"){
return(rep(e1,e2))
}
stop("No definition for ",.Generic)
}
Giving:
> a*5
[1] "hello" "hello" "hello" "hello" "hello"
> a+"world"
[1] "hello world"
> a/2
Error in Ops.ss(a, 2) : No definition for /
Note how S3 methods are dispatched only by reference to the first
argument (on the left of the operator). I think S4 beats this by
having signatures that can dispatch depending on both arguments.
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.