On 4/20/05, Ali - <[EMAIL PROTECTED]> 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" ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel