jgarcia at ija.csic.es
2008-Jul-01 07:40 UTC
[R] extracting elements from a list in vectorized form
Hi; It seems to me that has probably been asked in the past. But I cannot find the track. I usually need to extract elements from a list and contruct vector from them; e.g., to create a table. Perhaps there is a way to directly extract them without looping? Simple example:> S.lst$sublist.1 $sublist.1$age [1] 24.58719 $sublist.1$weight [1] 60.82861 $sublist.2 $sublist.2$age [1] 32.39551 $sublist.2$weight [1] 59.46347 etc. I would like to extract, e.g., directly all weights element from each sublist without looping. I know it is possible to do this as: unlist(S.lst)[paste("sublist.",1:length(S.lst),".weight",sep="")] but there is not some short-cut? something like S.lst[[1:length(S.lst)]]$weight ? Thanks and B.regards Javier ----------
Peter Dalgaard
2008-Jul-01 07:41 UTC
[R] extracting elements from a list in vectorized form
jgarcia at ija.csic.es wrote:> Hi; > It seems to me that has probably been asked in the past. But I cannot find > the track. > > I usually need to extract elements from a list and contruct vector from > them; e.g., to create a table. Perhaps there is a way to directly extract > them without looping? > Simple example: > > >> S.lst >> > $sublist.1 > $sublist.1$age > [1] 24.58719 > > $sublist.1$weight > [1] 60.82861 > > > $sublist.2 > $sublist.2$age > [1] 32.39551 > > $sublist.2$weight > [1] 59.46347 > > etc. > > I would like to extract, e.g., directly all weights element from each > sublist without looping. I know it is possible to do this as: > > unlist(S.lst)[paste("sublist.",1:length(S.lst),".weight",sep="")] > > but there is not some short-cut? something like > > S.lst[[1:length(S.lst)]]$weight ? > >I think this should do it: sapply(S.lst, "[[", "weight") -- O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907