[Rd] Overloading methods in R

Ali - saveez at hotmail.com
Fri Apr 22 03:04:40 CEST 2005


>
>
>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



More information about the R-devel mailing list