Re: Re: simple question
- To: mathgroup at smc.vnet.net
- Subject: [mg105313] Re: [mg105239] Re: [mg105202] simple question
- From: Francisco Gutierrez <fgutiers2002 at yahoo.com>
- Date: Fri, 27 Nov 2009 06:30:12 -0500 (EST)
Many thanks to Leonid, Valeri, Bob, and all the other friends who sent enlightening solutions to my simple problem. As always, the variety of methods of attacking the problem is quite astonishing. Best regards, Fg --- On Wed, 11/25/09, Bob Hanlon <hanlonr at cox.net> wrote: From: Bob Hanlon <hanlonr at cox.net> Subject: [mg105313] [mg105239] Re: [mg105202] simple question To: mathgroup at smc.vnet.net Date: Wednesday, November 25, 2009, 2:33 AM groupBy[mat_, positions_] := GatherBy[mat, Part[#, positions] &] Bob Hanlon ---- Francisco Gutierrez <fgutiers2002 at yahoo.com> wrote: ============= Dear List: I have the following list: ejemplo1={{1,0,2,2,0},{0,1,1,1,2},{2,0,0,1,1},{1,1,0,2,2},{1,0,2,0,1},{2,2,0,1,1},{2,1,1,1,2},{0,1,1,0,1}}; I want to group it, so that the sublists of ejemplo1 that have identical values at positions 4 and 5 are gathered together. So I did the following code: Split[ Sort[ejemplo1,#1[[4]]>=#2[[4]] && #1[[5]]>=#2[[5]] &],Take[#1,{4,5}]==Take[#2,{4,5}]&] Works! The output in effect is: {{{1,1,0,2,2}},{{0,1,1,1,2},{2,1,1,1,2}},{{2,0,0,1,1},{2,2,0,1,1}},{{1,0,2,0,1},{0,1,1,0,1}},{{1,0,2,2,0}}}, precisely what I wanted. Now, how can I create a function for the general case (instead of fixed positions 4 and 5, an arbitrary number of positions that act as "gathering parameter")? Fg