所有,
当您有一个矩阵并且想要对矩阵进行排序时,我目前不知道有一个函数可以让我对矩阵进行排序,而无需在列或行上使用循环。我认为这不是特别有效。另外,一旦执行排序,就没有直接的方法来保留位置。请参阅以下讨论以获取更多详细信息:
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 } );
);
);
);