私は(完全に素晴らしい)data.table
パッケージにまったく慣れていないので、非常に基本的でやや奇妙な問題に悩まされているようです。私が作業している正確なデータセットを投稿することはできませんが、それについてはお詫び申し上げます.
キー x を使用して、次のような data.table があるとします。
set1
x y
1: 1 a
2: 1 b
3: 1 c
4: 2 a
set1
すべての行を含む のサブセットを返したいx == 1
. これは、data.table: では驚くほど単純ですset1[J(1)]
。バム。終わり。を割り当てz <- 1
たり、呼び出したりすることもできますset1[J(z)]
。繰り返しますが、うまくいきます。
...最大6M行を含む実際のデータセットにスケールアップしようとした場合を除きます。を呼び出すとset1[J(1674)]
、まさに探していた 78 行の戻り値が返されます。しかし、(文字通り) 4M のこれらのサブセットを検索できる必要があります。検索している値を変数に代入すると、id <- 1674
、および呼び出しset1[J(id)]
... R は私のデスクトップをほとんどダウンさせます。
明らかに、私が理解できないことが data.table フードの下で起こっていますが、何が起こっているのかわかりません。スタックオーバーフローによるグーグルとスローグは、これが機能することを示唆しています。純粋な気まぐれから、私は試しました:
id <- quote(1674)
set1[J(eval(id))]
...しかし、それははるかに悪いです。なに…どうしたの?