[R] extracting components of a list

Martyn Plummer plummer at iarc.fr
Mon Jun 13 16:39:23 CEST 2005


On Mon, 2005-06-13 at 15:23 +0100, Robin Hankin wrote:
> Hi
> 
> how do I extract those components of a list that satisfy a certain 
> requirement?  If
> 
> jj <- list(list(a=1,b=4:7),list(a=5,b=3:6),list(a=10,b=4:5))
> 
> 
> I want just the components of jj that have b[1] ==4 which in this case 
> would be the first and
> third of jj, viz    list (jj[[1]],jj[[3]]).
> 
> How to do this efficiently?
> 
> My only idea was to loop through jj, and set unwanted components to 
> NULL, but
> FAQ 7.1 warns against this.
> 

#Select the vectors named "b" from the elements of jj
bvectors <- lapply(jj, FUN="[[", "b") 
#Take the first element of each b
bfirst <- sapply(bvectors, head, 1)
#Select elements of jj such that bfirst is 4
jj[bfirst == 4]




More information about the R-help mailing list