0

私は APLX で作業しており、2 列の行列 (常に 2 列になります) を 2 列目で並べ替える必要があります。この問題は、最初の列に 7 つの英数字セットの行が含まれていることです。ただし、2 番目の列には、英数字コードの各行の重みまたは「スコア」が含まれます。例えば...

4ST7SM4     34
XXW1X2X 340000
599E5EE   1516

右側の番号順に並べると…

XXW1X2X 340000
599E5EE   1516
4ST7SM4     34

したがって、常に降順です。ランクダウン機能をいじってみましたが、最初の列が英数字であるため、予想どおり値エラーが発生します。列を交換して元に戻してみましたが、それでも機能しません。つまり、同じエラーがスローされます。それらを分けて数字をランク付けすることもできますが、並べ替えるには英数字プレートが必要です。どうすればいいのかわかりません。

4

2 に答える 2

2

最初に、単一の 2 番目の列を評価してから、マトリックス全体を並べ替える必要があります。インデックスの原点が 0 であることに注意してください。1 を使用する場合は、ブラケット インデックスの 1 を 2 に置き換えます。

      m←3 2⍴'4ST7SM4' 34  'XXW1X2X' 34000 '599E5EE' 1516
      m
 4ST7SM4     34
 XXW1X2X  34000
 599E5EE   1516
      ⍒m[;1]
1 2 0
      m[1 2 0;]
 XXW1X2X  34000
 599E5EE   1516
 4ST7SM4     34

すべてを一度に:

      m[⍋m[;1];]
 4ST7SM4     34
 599E5EE   1516
 XXW1X2X  34000
于 2015-03-12T13:01:11.610 に答える
0

最初はグレードアップとグレードダウンがありました。これらは、数値ベクトルのみで定義されていました。

その後、グレードアップとグレードダウンが拡張され、文字データと行列データを操作できるようになりました。IP シャープでは、これは 1980 年頃に起こりました。おそらく、他の企業 (IBM、STSC) もその頃に同じことをしました。

ただし、当時、文字グレードには、照合シーケンスである左引数が必要でした。多くの場合、[]AV で十分ですが、大文字と小文字を含む並べ替えを行いたい場合は、次のようなものを使用する必要があったかもしれません。

'aAbBcCdD...zZ0123456789 ' gradeUp mat

これが APLX の値エラーの原因である可能性があります。それらの文字グレードの実装には、左の引数が必要な場合があります。例の行列の 2 番目の列が文字であると仮定すると、[]AV を使用して例をもう一度試してください。

m[ []av gradeUp disclose m[;2] ; ]
于 2015-03-30T08:43:50.093 に答える