Dimitri Liakhovitski
2013-Jul-30 14:06 UTC
[R] Select only rows that don't contain one number
Hello! I have a data frame: x<-data.frame(a=c(-1,1,2,3,4),b=c(1,-1,3,4,5),c=1:5,d=2:6,e=c(1,2,3,-1,4)) x How can I grab only those rows that don't contain any -1s (no matter in what columns? Without writing a loop. In other words, I want my output to contain only rows 3 and 5 of x. Thank you very much! [[alternative HTML version deleted]]
x[!apply(x, 1, function (y) any(y==-1)),] ------ Original Message ------ From: "Dimitri Liakhovitski" <dimitri.liakhovitski at gmail.com> To: "r-help" <r-help at r-project.org> Sent: 7/30/2013 10:06:02 AM Subject: [R] Select only rows that don't contain one number>Hello! > >I have a data frame: > >x<-data.frame(a=c(-1,1,2,3,4),b=c(1,-1,3,4,5),c=1:5,d=2:6,e=c(1,2,3,-1,4)) >x > >How can I grab only those rows that don't contain any -1s (no matter in >what columns? Without writing a loop. >In other words, I want my output to contain only rows 3 and 5 of x. > >Thank you very much! > > [[alternative HTML version deleted]] > >______________________________________________ >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.
José María Mateos
2013-Jul-30 14:19 UTC
[R] Select only rows that don't contain one number
2013/7/30 Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com>:> How can I grab only those rows that don't contain any -1s (no matter in > what columns? Without writing a loop. > In other words, I want my output to contain only rows 3 and 5 of x.index <- apply(x, 1, function (x) { !(c(-1) %in% x)}) x[index, ] a b c d e 3 2 3 3 4 3 5 4 5 5 6 4 Best, Jos?.
Dimitri Liakhovitski
2013-Jul-30 14:27 UTC
[R] Select only rows that don't contain one number
Thanks a a lot, Jose! On Tue, Jul 30, 2013 at 10:19 AM, José María Mateos <jmmateos@mce.hggm.es>wrote:> 2013/7/30 Dimitri Liakhovitski <dimitri.liakhovitski@gmail.com>: > > How can I grab only those rows that don't contain any -1s (no matter in > > what columns? Without writing a loop. > > In other words, I want my output to contain only rows 3 and 5 of x. > > index <- apply(x, 1, function (x) { !(c(-1) %in% x)}) > x[index, ] > a b c d e > 3 2 3 3 4 3 > 5 4 5 5 6 4 > > Best, > > José. >-- Dimitri Liakhovitski [[alternative HTML version deleted]]
x[rowSums(!x<0)==ncol(x),] #if you don't want x<0 #? a b c d e #3 2 3 3 4 3 #5 4 5 5 6 4 #or ?x[rowSums(!x==-1)==ncol(x),] #? a b c d e #3 2 3 3 4 3 #5 4 5 5 6 4 A.K. ----- Original Message ----- From: Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com> To: r-help <r-help at r-project.org> Cc: Sent: Tuesday, July 30, 2013 10:06 AM Subject: [R] Select only rows that don't contain one number Hello! I have a data frame: x<-data.frame(a=c(-1,1,2,3,4),b=c(1,-1,3,4,5),c=1:5,d=2:6,e=c(1,2,3,-1,4)) x How can I grab only those rows that don't contain any -1s (no matter in what columns? Without writing a loop. In other words, I want my output to contain only rows 3 and 5 of x. Thank you very much! ??? [[alternative HTML version deleted]] ______________________________________________ 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.