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!
Accessing selected elements of a list
4 messages · Gonçalo Ferraz, Rui Barradas, jim holtman +1 more
Hello, Just try jlist[ sapply(jlist,length) > 0 ] Hope this helps, Rui Barradas Em 08-11-2012 14:42, Gon?alo Ferraz escreveu:
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.
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 <gferraz29 at 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 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.
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.
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.