8

Rのベクトルを絶対値でソートする方法などを知っている人はいます(-2, 3, 1) -> (1, -2, 3)か?

私がpythonでそれを行っていた場合、すべての値とその符号のペアを作成し、ペアのリストを絶対値でソートしてから符号を再適用しますが、私はRに非常に慣れていないので、これを行う方法がわかりません.

乾杯

4

2 に答える 2

10

@Arun のメソッドは TRT です。

v[order(abs(v))]

ここvで、ソートされるベクトルです。

ノート:

  • abs(v)これにより、 と同じサイズの新しいベクトルが作成されvます。これはあまりメモリ効率が良くありませんがR、たとえば Lisp:(sort #'< v :key #'abs)や Python:で行われているように、 でこれを回避できるとは思いませんv.sort(key=abs)
  • この一時ベクトルの割り当ては、必ずしも悪いことではありません: メモリを失うことはありますが、アクセサー キーはN回数ではなくN*log(N)回数しか呼び出されないため、時間を得ることができますabs
  • より正確に言えば、ベクトルabs(v)はすぐにガベージ コレクションされますが、その割り当て (および特にガベージ コレクション) は大きなベクトルに対して高価であり、メモリが不足している場合は実際に問題になる可能性があります。

以下も参照してください。

于 2013-10-17T19:13:11.900 に答える