Ordina una matriceTutto,
C'è un modo per ottenere funzionalità simili a quelle mostrate di seguito:
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
Dopo l'ordinamento, come posso mantenere le posizioni originali degli elementi?
Ad esempio, se volessi ordinare ogni colonna della matrice, posso solo pensare di fare quanto segue:
for(i = 1, i <= N cols(A), i ++,
t = A[0,i];
t1 = sort descending(t);
);Ora, come posso determinare la posizione originale degli elementi e mantenerli?
https://www.mathworks.com/help/matlab/ref/sort.html - In Matlab, c'è un secondo argomento per la funzione di ordinamento che restituisce l'indice
Allo stesso modo in R, puoi mantenere l'indice. Ti chiedi qual è il modo migliore per farlo in JMP?
Re: Ordina una matrice@Mark_Bailey ,
Grazie. Invierò una richiesta alla lista dei desideri per fornire una funzione predefinita per questo.Spero che in futuro JMP trovi un modo per non dover scorrere la matrice. Mi piacerebbe vedere la famiglia di funzioni apply() di R introdotta in JMP.
Re: Ordina una matriceQuesto adattamento dovrebbe funzionare:
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 );
Re: Ordina una matrice@Mark_Bailey & @txnelson ,
Capisco che ti sembra ovvio che Rank() fa quello che voglio, tuttavia, ecco un esempio del motivo per cui sto chiedendo:
In Matlab, ecco cosa succede quando si tenta di ordinare una matrice. Mi scuso per aver estratto questo esempio da una piattaforma diversa, ho cercato di evitare di farlo ma non riesco a pensare a un modo migliore per spiegare cosa sto cercando. Quindi, se guardi i valori di "I", mantiene gli indici

Ora, se volessi fare esattamente la stessa cosa in JMP , è questo il modo in cui mi stai consigliando di prendere, sì, non mi ottiene lo stesso risultato. Inoltre, apprezzerei il fatto di non dover utilizzare un loop per qualcosa del genere
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3];
for(i = 1 , i <= N Cols(A), i++,
t = A[0,i];
t1 = Sort Descending(t);
ranks = Rank(t);
);
Re: Ordina una matriceUhm, è il bit di classifica...
Re: Ordina una matrice@txnelson ,
Credo che tu ti riferisca al contenuto che è anche trattato qui - https://www.jmp.com/support/help/14/ranking-and-sorting.shtml . Tuttavia, questo non si espande sull'acquisizione degli indici che sto cercando durante l'esecuzione dell'ordinamento. Spero di non perdermi qualcosa.
Re: Ordina una matriceDai un'occhiata a "Classificazione e ordinamento" nella sezione "Strutture dati, matrici" della Guida agli script