は、私は、データテーブルDTを持っていると私は多分私は別のテーブルからいくつかのことを参加し、その後セットでキーdata.tableでsetkeyの順序を元に戻すにはどうすればよいですか?
setkey(DT,mykey)
を順序を変更するとしましょう。
DT=DT2[DT]
元の行の順序を回復する方法はありますか?私はsetkeyを使う前に、明示的にインデックスを含めることでそれを行うことができます。
N=Nrow(DT)
DT[,orig_index:=1:N]
setkey(DT,mykey)
DT=DT2[DT]
setkey(DT,orig_index)
DT[,orig_index:=NULL]
もっと簡単な方法はありますか?私がキーを設定する代わりにこれを注文していたのであれば、少しシンプルになります。
o=order(DT$mykey)
uo=order(o)
setkey(DT,mykey)
DT=DT2[DT]
DT=DT[uo,]
それははsetkeyはここsave.unsetことができるように= Tは、最後の並べ替えを保存するためにdata.table言うだろう、この
setkey(DT,mykey,save.unset=T)
DT=DT2[DT]
unsetkey(DT)
ようなもので逆転させることができれば、私は推測種類クールになります逆転した。より良い
まだ、多分
setkey(DT, reorder=F)
DT=DT2[DT]
このオプションは、実際にDTの順序を変更することなく、参加するか、何のためのキーの順序付けを使用するようにdata.table言うだろう。それが実現可能か自然であるかは不明です。
私はdata.tableでそのようにこれを行う方法を認識していないです。私はキー列の自動並べ替えをしていない*同様の機能要求を覚えています。Matthewは機能リクエストとしてうれしく思います。だから、マシューは、この投稿をチェックすると、(特別な理由がない限り)これを機能要求として追加するのは気にならないと思います。私はこの機能が時々便利になるかもしれないと思う。 – Arun