将整数视为键值而不是`data.table [i`中的行索引

时间:2015-07-16 19:35:17

标签: r data.table

我有一个data.table,其中key字段包含整数值:

mydt1 <- data.table(keycol1=10:20, col1=letters[10:20], key='keycol1')

现在我想根据这些值选择记录:

myIDs <- c(11, 15, 19)

但我不能将这些值设为[i - 它们将被视为行索引:

mydt1[myIDs,] # it will try to query rows 11, 15, 19
#   keycol1 col1
#1:      20    t
#2:      NA   NA
#3:      NA   NA

目前,我使用将所有内容转换为character

的解决方法
myIDs <- as.character(myIDs)
mydt1$keycol1 <- as.character(mydt1$keycol1)
setkey(mydt1, keycol1)
mydt1[myIDs,] # this works as expected

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

只需进行二元连接,因为您已经设置了key

mydt1[.(myIDs)]
#    keycol1 col1
# 1:      11    k
# 2:      15    o
# 3:      19    s

P.S。

刚看到@Aruns的评论,正如他所说,你一定要阅读this

答案 1 :(得分:0)

我认为这就是你要求的

> mydt1[ keycol1 %in% myIDs ]   # also succeeds with mydt1[ keycol1 %in% myIDs , ]
   keycol1 col1
1:      11    k
2:      15    o
3:      19    s