try this (use '[' for indexing)

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

[[2]]
[1] 1 0

[[3]]
NULL

[[4]]
[1] 1 2 3

[[5]]
NULL

> which(sapply(jlist, length) > 0)
[1] 2 4
> jlist[sapply(jlist, length) > 0]
[[1]]
[1] 1 0

[[2]]
[1] 1 2 3

>


On Thu, Nov 8, 2012 at 9:42 AM, Gonçalo Ferraz <gferra...@gmail.com> wrote:
> 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!
>
> ______________________________________________
> R-help@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.



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

______________________________________________
R-help@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.

Reply via email to