Skip to content

Accessing selected elements of a list

4 messages · Gonçalo Ferraz, Rui Barradas, jim holtman +1 more

#
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!
#
Hello,

Just try

jlist[ sapply(jlist,length) > 0 ]

Hope this helps,

Rui Barradas
Em 08-11-2012 14:42, Gon?alo Ferraz escreveu:
#
try this (use '[' for indexing)
[[1]]
NULL

[[2]]
[1] 1 0

[[3]]
NULL

[[4]]
[1] 1 2 3

[[5]]
NULL
[1] 2 4
[[1]]
[1] 1 0

[[2]]
[1] 1 2 3

        
On Thu, Nov 8, 2012 at 9:42 AM, Gon?alo Ferraz <gferraz29 at gmail.com> wrote:

  
    
#
Hi,
If i understand it correctly,

lapply(jlist,function(x) x[x>0])
#[[1]]
#NULL

#[[2]]
#[1] 1

#[[3]]
#NULL

#[[4]]
#[1] 1 2 3

#[[5]]
#NULL
A.K.



----- Original Message -----
From: Gon?alo Ferraz <gferraz29 at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Thursday, November 8, 2012 9:42 AM
Subject: [R] Accessing selected elements of a list

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 at 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.