Re: Selecting Many Things Rather Than Selecting One Thing From Many
- To: mathgroup at smc.vnet.net
- Subject: [mg66195] Re: Selecting Many Things Rather Than Selecting One Thing From Many
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Thu, 4 May 2006 05:19:34 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <e39k7e$cno$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Gregory Lypny wrote: > Hello everyone, > > I've discovered another use or need for the Select function, which I > suspect requires mapping of some sort. > > In my previous posts, members of this MathGroup kindly showed me how > to apply Select to many columns of a matrix at once. For example, > > (Select[#1, #1 > K & ] & ) /@ Transpose[theMatrix] > > will pull out all values greater than K, where K is a number such as > 100. > > But suppose now that K is a list of numbers, such as K={34, 876, > 199}, and I simply want to extract or identify all of the rows in the > first column of theMatrix equal to any one of those numbers. How > would I do that? I started with > > Select[theMatrix, #[[1]]==any element of list K] > > and I imagine something similar could be applied to the Position > function. > > Any hint would be much appreciated. > > Gregory > Hi Gregory, I think the following expressions will direct you toward what you want: In[1]:= lst={{109,168,173,109},{4,143,200,90},{181,162,85,196},{30, 108,86,34},{94,127,144,34},{199,109,195,188},{176, 34,46,110},{95,27,160,109},{43, 71,130,66},{56,148,109,163},{110,43,50,53},{32,34,16,95}}; In[2]:= TableForm[lst] Out[2]//TableForm= 109 168 173 109 4 143 200 90 181 162 85 196 30 108 86 34 94 127 144 34 199 109 195 188 176 34 46 110 95 27 160 109 43 71 130 66 56 148 109 163 110 43 50 53 32 34 16 95 In[3]:= K=100; Select[lst,#1[[1]]>K&]//TableForm Out[4]//TableForm= 109 168 173 109 181 162 85 196 199 109 195 188 176 34 46 110 110 43 50 53 In[5]:= K={43,876,199}; Select[lst,MemberQ[K,#1[[1]]]&]//TableForm Out[6]//TableForm= 199 109 195 188 43 71 130 66 In[7]:= Position[lst[[All,1]],Alternatives@@K]//TableForm Out[7]//TableForm= 6 9 In[8]:= Position[lst,{x_,___}/;MemberQ[K,x]]//TableForm Out[8]//TableForm= 6 9 Best regards, Jean-Marc