Re: Selecting Rows Where All Columns Satisfy a Condition
- To: mathgroup at smc.vnet.net
- Subject: [mg82602] Re: Selecting Rows Where All Columns Satisfy a Condition
- From: Szabolcs Horvát <szhorvat at gmail.com>
- Date: Fri, 26 Oct 2007 05:15:12 -0400 (EDT)
- References: <ffppu6$l6g$1@smc.vnet.net>
Gregory Lypny wrote: > Hello everyone > > I've got an Nx4 numeric array called X. I'd like to pull out all > rows where -9 does not appear in any of the four columns. I know I > can this: I do not understand this sentence (please just give an example instead of using the ambiguous terms "row" and "column"), > Select[X, #[[1]] != -9 && #[[2]] != -9 && #[[3]] != -9 && #[[4]] != > -9 &] however, this Mathematica code fragment suggests that you have the data in this format: x = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, ... }, and would like to select the sublists that do not contain -9. > But is there a more elegant way that applies the not-equal-to > condition to each column without having to repeat it? > In this case, the following should work: Select[x, FreeQ[#, e_ /; e == -9] &] Here I used e_ /; e == -9 instead of simply -9 because -9 == -9.0 is True, but -9 === -9.0 is False. This may or may not be a problem in your application. Other alternatives: x /. {___, -9, ___} -> Sequence[] Select[x, VectorQ[#, # != -9 &] &] Select[x, And@@(# != -9 & /@ #) &] -- Szabolcs