[R] How do I access with the name of a (passed) function

Duncan Murdoch murdoch at stats.uwo.ca
Sun Oct 18 13:53:03 CEST 2009


On 17/10/2009 7:26 AM, Ajay Shah wrote:
> How would I do something like this:
> 
> f <- function(x, g) {
>   s <- as.character(g)               # THIS DOES NOT WORK
>   sprintf("The %s of x is %.0f\n", s, g(x))
> }

Gabor showed you how to do it if you pass an expression which evaluates 
to a function.  If you want to pass an expression that returns a 
character string as below, use

if (is.character(g)) {
   s <- g
   g <- get(s, parent.frame()) # gets it from the caller's frame
}

> 
> f(c(2,3,4), "median")
> f(c(2,3,4), "mean")
> 
> and get the results 
> 
>    "The median of x is 3"
>    "The mean of x is 3"
> 

Duncan Murdoch




More information about the R-help mailing list