f <- function(...) UseMethod("f", NULL)

f.NULL <- function(...) {
        args <- list(...)
        classes <- sapply(args, class)
        .Class <- paste(classes, collapse = ".")
        NextMethod("f", ...)
}

f.numeric <- function(...) 2 * ..1
f.numeric.numeric <- function(...) ..1 + ..2
f.character.numeric.Date <- function(...) {
   args <- list(...)
   paste(args[[1]], args[[2]], format(args[[3]], "%Y-%m-%d"))
}
f.default <- function(...) print(list(...))


f(1) # 2 f(1,2) # 3 f("a", 23, Sys.Date()) # "a 23 2005-04-21" f() # list()


Thanks Gabor! This answers a big part of my question. I am just curious why something like this doesn't work in S4:

-------------------------
setGeneric("foo", function(object, ...) standardGeneric("foo"))

foo.NULL <- function(object, ...) {
        args <- list(...)
        classes <- sapply(args, class)
        .Class <- paste(classes, collapse = ".")
}

foo.default <- function(object, ...) paste("wrong args!")

foo.numeric <- function(object, ...) 2 * ..1
foo.numeric.numeric <- function(object, ...) ..1 + ..2

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

Reply via email to