R 在data.table中的数字列上进行子集设置

R 在data.table中的数字列上进行子集设置,r,data.table,R,Data.table,我的RStudio版本是0.98.932,R是3.1.1,我的数据表版本是1.9.4 下面是一段示例代码: library(data.table) TEMP <- data.table(SHOPPER_ID = c(953103325440, 953103325441)) TEMP[SHOPPER_ID == 953103325440] 然而,R实际返回的是: ## SHOPPER_ID ## 1: 953103325440 ## 2: 953103325441 我不知道为

我的RStudio版本是0.98.932,R是3.1.1,我的数据表版本是1.9.4

下面是一段示例代码:

library(data.table)

TEMP <- data.table(SHOPPER_ID = c(953103325440, 953103325441))
TEMP[SHOPPER_ID == 953103325440]
然而,R实际返回的是:

##      SHOPPER_ID
## 1: 953103325440
## 2: 953103325441
我不知道为什么会发生这种情况,我想知道这是我的一个错误,还是一个可能的错误。当我将购物者ID列转换为字符变量时,我得到了我期望得到的结果。

我的一位同事有一个旧版本的data.table(<1.9),他没有遇到相同类型的错误。此外,如果我运行以下代码:

unique(TEMP)
我得到了想要的结果

##      SHOPPER_ID
## 1: 953103325440
你可以做:

TEMP[TEMP$SHOPPER_ID == 953103325440, ]

类似地,可以在列上运行unique,
unique(TEMP$SHOPPER\u ID)

尝试
TEMP[TEMP[,.I[SHOPPER\u ID==953103325440]]]
您确定在旧版本中没有这种行为吗?那对我来说像个虫子。即使是二进制搜索也会给出一些奇怪的结果
setkey(data.table(SHOPPER_ID=c(953103325440,953103325441)),SHOPPER_ID[J(953103325440)]
请检查
?setnumericommanding
。对于这样大的(整数)数字,我们建议使用
bit64::integer64
。我打开了一个问题,正是为了澄清这一点。将记录在1.9.6中。@Davidernburg。我想我以前可能收到过,但我真的不记得是什么包裹了。正如我所说,我让我的同事尝试data.table的版本早于1.9,但他没有得到错误。
TEMP[TEMP$SHOPPER_ID == 953103325440, ]