Looking for data.table Answers? Try Ask4KnowledgeBase
Looking for data.table Keywords? Try Ask4Keywords

data.tableキーとインデックスの使用


前書き

data.tableのキーとインデックスは、特定の計算を高速に実行することを可能にします。ほとんどの場合、結合やサブセット化に関連します。キーはテーブルの現在の並べ替え順を示します。各インデックスは、列のシーケンスに関するテーブルの順序に関する情報を格納する。トピックの公式のビネットへのリンクについては、下記の「備考」を参照してください。

備考

公式のビネットはこのトピックのベストな紹介です:

キー対インデックス

data.tableは一連の列によって「キー付け」され、関心のある関数にそれらの列によってデータがソートされていることを伝えることができます。キーを取得または設定するには、 ?key記載されている機能を使用し?key

同様に、関数はdata.tableの「インデックス」を利用することができます。各索引と表は複数の列を持つことができます。一連の列を基準にしてデータの順序に関する情報を保管します。キーのように、インデックスは特定のタスクをスピードアップすることができます。インデックスを取得または設定するには、 ?indices記載されている関数を使用し?indices

インデックスは自動的に設定することもできます(現在は、一度に1つの列に対してのみ)。これの仕組みと必要に応じてそれを無効にする方法の詳細については?datatable.optimizeを参照してください。

確認と更新

キー列には値がありません。

キーとインデックスは属性として格納され、偶然にも表のデータの実際の順序に対応していない可能性があります。多くの関数はキーまたはインデックスの有効性をチェックしてから使用しますが、それは留意する価値があります。

ソート順が保持されていることが明らかでない更新後に、キーとインデックスが削除されます。たとえば、 DT = data.table(a=c(1,2,4), key="a")から開始して、 DT[2, a := 3]ように更新すると、キーは破損します。

キーとインデックスの使用 関連する例