【发布时间】:2019-12-03 01:48:58
【问题描述】:
我有一个简单的问题,但我想不出一个简单的解决方案:
library(data.table)
plouf <- data.table(1:10,letters[1:10])
plouf[V1 %in% c(3,1),V2]
[1] "a" "c"
我希望输出保持子集向量的初始顺序,即"c" "a"。有哪些可能性?
我有
sapply(c(3,1),function(x){plouf[V1 == x,V2]})
但我觉得它很丑。
编辑
我有
setkey(plouf,V1)
plouf[c(3,1),V2]
这无疑是 data.table 的好方法。 我仍然很好奇解决方案是什么
【问题讨论】:
-
使用
matchplouf[,V2[match(c(3, 1), V1)]]#[1] "c" "a"。setkey选项也会进行重新排序。如果您不希望这样,那么match是一个选项
标签: r dataframe data.table subset