DATA MINING
Desktop Survival Guide by Graham Williams |
|||||
myfun <- function(arg1, arg2=TRUE, ...) { [...] } |
The results of a function are returned with the return function (or else is the result of the last evaluated statement in the function). The returned result will be printed if the result is not assigned to a variable. To avoid the result being printed, use the invisible function to return the result.
Anonymous functions can be used:
(function(x, y) x^2 + y^2)(0:5, 1) # 1 2 5 10 17 2 |
Functions are first class objects. You can write a function to return
a function:
f <- function(y=10) { g <- function(x) seq(x, x+y) return(g) } > h <- f(5) > h(5) [1] 5 6 7 8 9 10 > h <- f() > h(5) [1] 5 6 7 8 9 10 11 12 13 14 15 > get("y",env=environment(h)) [1] 10 |
And you can write a function to apply some given function:
chooseFun<-function(dat=1:10,fun=mean,...)fun(dat,...) chooseFun() x<-rnorm(100) chooseFun(x,median) chooseFun(x,hist) chooseFun(x,hist,col='gray') |