[R] accessing and preserving list names in lapply

baptiste auguie ba208 at exeter.ac.uk
Fri Feb 27 10:47:28 CET 2009


Hi,

Perhaps Hadley's plyr package can help,

> library(plyr)
> temp <- list(x=2,y=3,x=4)
> llply(temp, function(x) x^2 )
>
> $x
> [1] 4
>
> $y
> [1] 9
>
> $x
> [1] 16


baptiste

On 27 Feb 2009, at 03:07, Alexy Khrabrov wrote:

> Sometimes I'm iterating over a list where names are keys into another
> data structure, e.g. a related list.  Then I can't use lapply as it
> does [[]] and loses the name.  Then I do something like this:
>
> do.one <- function(ldf) { # list-dataframe item
>   key <- names(ldf)
>   meat <- ldf[[1]]
>   mydf <- some.df[[key]] # related data structure
>   r.df <- cbind(meat,new.column=computed)
>   r <- list(xxx=r.df)
>   names(r) <- key
>   r
> }
>
> then if I operate on the list L of those ldf's not as lapply(L,...),  
> but
>
> res <- lapply(1:length(L),do.one)
>
> Can this procedure be simplified so that names are preserved?
> Specifically, can the xxx=..., xxx <- key part be eliminated -- how
> can we have a variable on the left-hand side of list(lhs=value)?
>
> Cheers,
> Alexy
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag




More information about the R-help mailing list