すべて、
マトリックスがあり、マトリックスを並べ替える場合、現在、列または行に対するループを使用せずにマトリックスを並べ替えることができる関数を知りません。これは特に効率的ではないと思います。また、並べ替えを実行した後に位置を保持する簡単な方法はありません。詳細については、次の説明を参照してください。
https://community.jmp.com/t5/Discussions/Sort-a-matrix/mp/85678#M38246
あなたが議論で見るように、 @ markbailey#@ markbailey# シンプルなカスタム関数を提供するのに十分親切でした。これは、JMPの兵器で持つと便利だと思います。
その機能 @ markbailey#@ markbailey# 便宜上、以下に示します。
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 );私はまた、同じ線に沿ってもう少し追加する自由をとって、それを私の限られた必要性より一般化するようにしました:
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 } );
);
);
);