Overloading methods in R
On 4/20/05, Ali - <saveez@hotmail.com> wrote:
(1) It seems to me that, generally, in R it is not possible to overload
functions. Is that right?
(2) Assuming that the above is true, or partially true, is there any extra
packages to handle overloading in R?
(3) Assuming (1) is TRUE and (2) is FALSE, can anyone provide some advice on
developing some function that understand what the arguments are and then
calls the right overloaded function?
It would be something like this:
overloadedFunction1 <- function(x) {};
overloadedFunction2 <- function(x, y) {};
theFunction <- function(...)
{
# How to identify ... and call the right overloaded function?
}
Here is an example using S3:
f <- function(x, y) UseMethod("f")
f.default <- function(x,y,z) {
+ if (missing(z)) {
+ class.x <- if (missing(x)) "missing" else class(x)
+ class.y <- if (missing(y)) "missing" else class(y)
+ .Class <- paste(class.x, class.y, sep = ".")
+ NextMethod("f", z = 1)
+ } else # real default method
+ if (!missing(x) && !missing(y)) paste(x,y) else "one missing"
+ }
f.missing.missing <- function(x, y, z) "both Missing" f.numeric.numeric <- function(x,y, z) paste(x, y) f()
[1] "both Missing"
f(1)
[1] "one missing"
f(y=1)
[1] "one missing"
f(1,1)
[1] "1 1"