in reply to Re: Sort a matrix by row
in thread Sort a matrix by row

Thank you for your answers!

Indeed, working with indexes do the job, because in the end I just want to retrieve the array "effects" in the right order, and not necessarily reconstruct the matrix.

So with my example, this code works fine :

my @idx = sort { $matrix[0][$a] cmp $matrix[0][$b] } 0..$#{$matrix[0]} +; my @effets_ord = map { $matrix[2][$_] } @idx;

If I understood correctly, this sorts the transcript's row (attributes indexes actually) and finally I get the effects in the right order.

This is the first step of what I aim to do.

BUT for the second step (sort alleles) the subtlety I omit to say is that I want to order alleles according to another array, let's say for example:

my @alleles_origin = (a2,a1,a3);

Knowing the number of members in @alleles is the same for each transcript (t1 and t2).

So finally, the effects in my array @effects_sorted would be in the order of : t1 then t2 (this step is ok now thanks to you guys), and also alleles in the order of @alleles_origin for t1 and t2.