[R] problem with lapply(x, subset, ...) and variable select argument
Thomas Lumley
tlumley at u.washington.edu
Mon Oct 10 19:22:37 CEST 2005
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 at 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 at u.washington.edu University of Washington, Seattle
More information about the R-help
mailing list