The reason for this behaviour is that finding methods is a lot slower than just evaluating the built-in function. So R takes the time to determine if there's an attribute named "class" attached, but doesn't go searching further if there isn't one.

Duncan Murdoch

On 02/12/2021 3:10 p.m., Andrew Simmons wrote:
This is because + dispatches on the class attribute, which a string like
"test" has set to NULL, so it doesn't dispatch. You can add the class
yourself like structure("test", class = "character") and that should work.

I'm not sure where it's explained, but most primitive functions dispatch on
the class attribute, which is different from UseMethod which calls class()
if the class attribute is NULL.

I think if you want to define something like what you have written, you
could write a function `%+%` use that instead

On Thu, Dec 2, 2021, 14:32 Bert Gunter <bgunter.4...@gmail.com> wrote:

... and probably a dumb one and almost certainly not of interest to
most R users. But anyway...

?"+" says:
"The unary and binary arithmetic operators are generic functions:
methods can be written for them individually or via the Ops group
generic function. "

So:
"+.character" <- function(e1, e2) paste0(e1, e2)
## but this doesn't 'work':
"a" + "b"
Error in "a" + "b" : non-numeric argument to binary operator

## but explicitly invoking the method does 'work' :
"+.character"('a','b')
[1] "ab"

##Note also:
methods("+")
[1] +.character +.Date      +.IDate*    +.POSIXt    +.trellis*

So what am I failing to understand?
Thanks.

Bert Gunter

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to