Here is another solution:
grpsize = ceiling(1e7/26^2)
DT <- data.table(
x=rep(LETTERS,each=26*grpsize),
y=rep(letters,each=grpsize),
v=runif(grpsize*26^2))
setkey(DT, x)
system.time(DT1 <- DT[x=="A" | x=="Z"])
user system elapsed
0.68 0.05 0.74
system.time(DT2 <- DT[J(c("A", "Z"))])
user system elapsed
0.08 0.00 0.07
all.equal(DT1[, v], DT2[, v])
TRUE
Note that I took this example from the data.table document. The only difference is that I no longer rewrite letters in factors, because character keys are now available (see NEWS for version 1.8.0).
: J data.table. , J(0, 1), data.table , , :
> J(0,1)
V1 V2
[1,] 0 1
, , . data.table . c().
J(c(0,1))
V1
[1,] 0
[2,] 1