我有一个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
这样做的正确方法是什么?
答案 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