Skip to content
Prev 306359 / 398506 Next

specifying arguments in functions and calling functions, within functions

Hello,

You define a 2nd version of Scale with the dots argument but do not use it.


Scale2 <- function(x, method=c("mean", "median"),...) {
    scl <- match.fun(method)
    scl(x, ...)   # Here!
}

Scale2(ex, method=median, na.rm=TRUE)  # both return
Scale2(ex, method="median", na.rm=TRUE)  # the median

You could also use 'na.rm = TRUE' instead of '...', since both mean and 
median use it. Anyway, if you define a function with certain arguments, 
do try to use them in the function body. :)

As for the method argument, when the default value is a vector, it's 
primary use is to check that one of those vector values and _only_ one 
of those is passed to the function. More or less like this.

Scale3 <- function(x, method=c("mean", "median"),...) {
    method <- match.arg(method)
    scl <- match.fun(method)
    scl(x, ...)
}

Scale3(ex, method=median, na.rm=TRUE)  # Error
Scale3(ex, method="median", na.rm=TRUE)  # Right
Scale3(ex, method="var", na.rm=TRUE)  # Other type of error


Hope this helps,

Rui Barradas

Em 26-09-2012 16:56, K. Brand escreveu: