Alles,
Wenn Sie eine Matrix haben und die Matrix sortieren möchten, ist mir derzeit keine Funktion bekannt, mit der ich die Matrix sortieren kann, ohne eine Schleife über die Spalten oder Zeilen zu verwenden. Ich denke nicht, dass dies besonders effizient ist. Darüber hinaus gibt es keine einfache Möglichkeit, die Positionen nach dem Sortieren beizubehalten. Weitere Informationen finden Sie in der folgenden Diskussion:
https://community.jmp.com/t5/Discussions/Sort-a-matrix/mp/85678#M38246
Wie Sie in der Diskussion sehen werden, @markbailey war so freundlich, eine einfache benutzerdefinierte Funktion anzubieten, die ich für nützlich halte, um sie im JMP-Arsenal zu haben.
Die Funktion, die @markbailey zur Verfügung gestellt wird unten für die Bequemlichkeit gezeigt.
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 );Ich habe mir auch die Freiheit genommen, etwas mehr in die gleiche Richtung hinzuzufügen, um es allgemeiner zu machen als mein begrenztes Bedürfnis:
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 } );
);
);
);