Re: [R] problem with lapply(x, subset, ...) and variable select argument

From: Thomas Lumley <tlumley_at_u.washington.edu>
Date: Tue 11 Oct 2005 - 03:22:37 EST

On Mon, 10 Oct 2005, joerg van den hoff wrote:

> I need to extract identically named columns from several data frames in
> a list. the column name is a variable (i.e. not known in advance). the
> whole thing occurs within a function body. I'd like to use lapply with a
> variable 'select' argument.

You would probably be better off using "[" rather than subset().

tt <- function (n) {

     x <- list(data.frame(a=1,b=2), data.frame(a=3,b=4))
     print(lapply(x,"[",n))

}

seems to do what you want.

         -thomas

> example:
>
> tt <- function (n) {
> x <- list(data.frame(a=1,b=2), data.frame(a=3,b=4))
> for (xx in x) print(subset(xx, select = n)) ### works
> print (lapply(x, subset, select = a)) ### works
> print (lapply(x, subset, select = "a")) ### works
> print (lapply(x, subset, select = n)) ### does not work as intended
> }
> n = "b"
> tt("a") #works (but selects not the intended column)
> rm(n)
> tt("a") #no longer works in the lapply call including variable 'n'
>
>
> question: how can I enforce evaluation of the variable n such that
> the lapply call works? I suspect it has something to do with eval and
> specifying the correct evaluation frame, but how? ....
>
>
> many thanks
>
> joerg
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley@u.washington.edu	University of Washington, Seattle

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Tue Oct 11 03:32:42 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 18:38:01 EST