[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