Re: Using Select

*To*: mathgroup at smc.vnet.net*Subject*: [mg97459] Re: Using Select*From*: Szabolcs Horvát <szhorvat at gmail.com>*Date*: Fri, 13 Mar 2009 04:54:25 -0500 (EST)*References*: <gpacsh$ms3$1@smc.vnet.net>

Karsten W. wrote: > Hello, > > here is a problem I have solved but I am not happy with the method > > I have a data matrix DATA, a list of m ordered n-tuples. I run a > function on the data matrix which returns a list DATAEVAL with m > elements. The i-th element of this list corresponds to the i-th tuple > of the data matrix. I think of this DATAEVAL list as an additional > column of the data matrix. > > Now I am only interested in those tuples of the data matrix, where the > corresponding DATAEVAL list has a value greater than zero. > > My current approach is the following: I add the DATAEVAL list to the > data matrix and call Select afterwards: > > data = Import[...]; > dataEval = f[data, ...]; > filteredData = Select[Transpose[Join[Transpose[data], {dataEval}] ], > Last[#] > 0 &]; > > This works. However, calling Transpose two times seems not to be the > most efficient way to solve the problem. > > As a newbie to Mathematica (and functional programming), I wonder if > you can point me to a simpler solution? > Hello Karsten, Use Pick[]. Pick[DATA, DATAEVAL, n_ /; n > 0]