[R] Passing the name of a variable to a function

Liviu Andronic landronimirc at gmail.com
Wed Aug 4 22:24:59 CEST 2010


Dear Anthony

On Wed, 4 Aug 2010 14:56:58 +0100
Anthony Staines <anthony.staines at gmail.com> wrote:
>  What I would like to do is something like "write a function which
> takes the *name* of a variable, presumably a s a character string,
> from a dataframe, as one argument, and the dataframe, as a second
> argument".
> 
I am not sure that this is what you're looking for, but I was working
on this all day and am pretty happy with the result. The following code
takes a list of character variable names x.vars, apply-ies the function
to each variable .var in data frame .data (with optional subset .subs)
and stores the results in a list names-ed after the original
variables list. 

Best regards
Liviu

my.fun <- function(.var, .data, .subs) {
    require(lattice)
    res <- list()
    x <- .data[[.var]][.subs]
    res <- bwplot(x, main=.var)
    return(res)
}

x.vars <- as.list(names(mtcars)[2:5])
names(x.vars) <- names(mtcars)[2:5]
x.vars  ##there's probably a nicer way of doing this

x <- lapply(x.vars, my.fun, .data=mtcars)
x  ##if you use Sweave, don't forget to print(x)



More information about the R-help mailing list