Re: simple question
- To: mathgroup at smc.vnet.net
- Subject: [mg105229] Re: simple question
- From: Raffy <raffy at mac.com>
- Date: Wed, 25 Nov 2009 02:31:18 -0500 (EST)
- References: <hegf08$1g1$1@smc.vnet.net>
On Nov 24, 6:11 am, Francisco Gutierrez <fgutiers2... 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 > GatherBy[ejemplo1, #[[{4,5}]] &] Replace {4,5} with any number/combination of indices.