Hi,

I may be mistaken here but a possible interpretation of:

"If a method is found for just one argument or the same method is found for both, it is used."

could be that "the same method" here does not mean identical in term of object/content (as identical tests), but means that the two arguments resolve to the same method definition, i.e. a single common method exists for both arguments. This would happen is if a single method is defined for a common parent class. Try:


`+.C` <- function(x1, x2){
    message("Running custom + function")
}

x <- structure(1, class=c('A', 'C'))
y <- structure(1, class=c('B', 'C'))

x + y


Another work around would be to define only one method for class 'a' and do the dispatch to `plus.b` in there (might even be able to call it `+.b` if not exported).

Might be a good suggestion to add a test in UseMethod to check is the methods are in fact identical. But there might be undesired side effects: two identical methods in different environment that behave differently depending on the state of the environment? By the way any way of seeing any code of primitive function or are these pure C functions, which need to be searched for in R source code?

Renaud

--
Renaud Gaujoux
Computational Biology - University of Cape Town
South Africa

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

Reply via email to