Tutti,
Quando si dispone di una matrice e si desidera ordinare la matrice, al momento non sono a conoscenza di una funzione che mi consentirebbe di ordinare la matrice senza utilizzare un ciclo sulle colonne o sulle righe. Non credo che questo sia particolarmente efficiente. Inoltre, non esiste un modo semplice per mantenere le posizioni una volta eseguito l'ordinamento. Si prega di consultare la seguente discussione per maggiori dettagli:
https://community.jmp.com/t5/Discussions/Sort-a-matrix/mp/85678#M38246
Come vedrai nella discussione, @markbailey è stato così gentile da offrire una semplice funzione personalizzata, che ritengo utile avere nell'arsenale di JMP.
La funzione che @markbailey fornito è mostrato di seguito per convenince.
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3];
sort matrix = Function( { m }, { t, b=[], i=[] },
For( j = 1, j <= N Cols( m ), j++,
t = A[0,j];
b ||= Sort Descending( t );
i ||= Matrix( Reverse( As List( Rank Index( t ) ) ) );
);
Eval List( { b, i } );
);
{ B, I } = sort matrix( A );
Show( A, B, I );Mi sono anche permesso di aggiungere un po 'di più sulla stessa linea, in modo da renderlo più generalizzato rispetto alle mie limitate necessità:
sort matrix = Function( { m,order }, { t, b=[], i=[] },
If(order == "ascending",
For( r = 1, r <= N Cols( m ), r++,
t = A[0,r];
b ||= Sort Ascending( t );
i ||= Matrix( As List( Rank Index( t ) ) );
);
Eval List( { b, i } );
,
// else
If(order == "descending",
For( r = 1, r <= N Cols( m ), r++,
t = A[0,r];
b ||= Sort Descending( t );
a i ||= Matrix(Reverse(As List( Rank Index( t ) )) );
);
Eval List( { b, i } );
);
);
);