[R] Accessing selected elements of a list

Gonçalo Ferraz gferraz29 at gmail.com
Thu Nov 8 15:42:49 CET 2012


Hi,


If I have a vector:

junk <- c(2,0,0,3,0)

and want to access, say, all the elements that are greater than zero. I just do:

junk[which(junk>0)]



Now, If I have a list:

jlist <- list(NULL,c(1,0),NULL,c(1,2,3), NULL)

and want to access all the elements that have length greater than zero, I know how to find the elements with:

which(sapply(jlist,length)>0)

But how do I get a new list, only with the non-zero-length elements, without having to write a for loop?

I tried:

notnull <- which(sapply(jlist,length)>0)
jlist[[notnull]]

and got the error:

Error in jlist[[notnull]] : recursive indexing failed at level 2

Thank you for any help!



More information about the R-help mailing list