所有,
當您有一個矩陣並且想要對矩陣進行排序時,我目前不知道有一個函數可以讓我對矩陣進行排序,而無需在列或行上使用循環。我認為這不是特別有效。另外,一旦執行排序,就沒有直接的方法來保留位置。請參閱以下討論以獲取更多詳細信息:
https://community.jmp.com/t5/Discussions/Sort-a-matrix/mp/85678#M38246
您將在討論中看到, @markbailey 非常友好,可以提供一個簡單的自定義功能,我認為在JMP軍械庫中使用該功能很有用。
的功能 @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 } );
);
);
);