Hi, I know ways to do this but they all seem awkward and I somehow believe that there is a convenient shortcut. If I have a data.frame with many columns, how can I request all rows for which at least one column satisfy an expression? For instance, all rows where at least one column is negative. Many thanks, Werner
One solution - let's say our data.frame is "xx" Then: xx <- matrix(rnorm(9), 3,3) apply(xx < 0, 1, any) ----------------Contact Details:------------------------------------------------------- Contact me: Tal.Galili@gmail.com | 972-52-7275845 Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | www.r-statistics.com (English) ---------------------------------------------------------------------------------------------- On Fri, Aug 6, 2010 at 4:03 PM, Werner W. <pensterfuzzer@yahoo.de> wrote:> Hi, > > I know ways to do this but they all seem awkward and I somehow believe that > there is a convenient shortcut. > > If I have a data.frame with many columns, how can I request all rows for > which > at least one column satisfy an expression? > > For instance, all rows where at least one column is negative. > > Many thanks, > Werner > > > > > ______________________________________________ > 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. >[[alternative HTML version deleted]]
On 08/06/2010 08:03 AM, Werner W. wrote:> Hi, > > I know ways to do this but they all seem awkward and I somehow believe that > there is a convenient shortcut. >Since you don't show us what you tried, I don't know what you consider 'awkward'.> If I have a data.frame with many columns, how can I request all rows for which > at least one column satisfy an expression? > > For instance, all rows where at least one column is negative.A small, reproducible example in R is far better to work from than English descriptions. Does your data.frame consist entirely of numeric variables? It sounds like it, in which case, you can use apply, which will coerce your data.frame to a matrix. df1 <- data.frame(...) df1[apply(df1, 1, function(x) any(x) < 0), ]
Thanks for the answers! The any function was basically exactly what I was looking for. (previously I used something with rowSums() which is probably not the most efficient way.) Thanks so much, Werner -- View this message in context: http://r.789695.n4.nabble.com/data-frame-return-all-rows-where-at-least-one-tp2316292p2316407.html Sent from the R help mailing list archive at Nabble.com.