假设我有一个 data.table,我想选择变量 x 的值为 b 的所有行。这很容易
library(data.table)
DT <- data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x) # set a 1-column key
DT["b"]
顺便说一句,似乎必须设置一个键,如果该键未设置为 x 则这不起作用。顺便说一句,如果我将两列设置为键会发生什么?
无论如何,继续前进,假设我想选择变量 x 为 a 或 b 的所有行
DT["b"|"a"]
不工作
但以下工作
DT[x=="a"|x=="b"]
但这使用矢量扫描 la 数据帧。它不使用二进制搜索。我猜对于较小的数据集,这无关紧要。
这是我应该做的还是我对 data.table 语法一无所知?
还有一件事情。是否有使用 data.table 的更复杂的布尔多变量选择(或子集)过程的示例?
我知道我总是可以恢复使用 subset() 函数,因为如果必须,data.table 将表现为 data.frame。