我对(完全了不起的)软件包是全新的data.table
,并且似乎陷入了一个非常基本的,有点奇怪的问题。我无法发布我正在使用的确切数据集,对此我深表歉意——但我认为问题很简单,可以清楚地表达,希望这仍然很清楚。
假设我有一个像这样的data.table,带有键x:
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 引擎盖下,但我无法弄清楚是什么。谷歌搜索和通过 Stack Overflow 搜索表明这应该可行。出于纯粹的奇思妙想,我尝试过:
id <- quote(1674)
set1[J(eval(id))]
......但那远非常糟糕。什么……这是怎么回事?