理解.I在R中的data.table中

bla*_*p07 23 r subset data.table

我一直在玩data.table,我遇到了一个区别,我不确定我是否理解.给定以下数据集:

library(data.table)

set.seed(400)
DT <- data.table(x = sample(LETTERS[1:5], 20, TRUE), key = "x"); DT
Run Code Online (Sandbox Code Playgroud)

你可以向我解释以下表达方式之间的区别吗?

1) DT[J("E"), .I]

2) DT[ , .I[x == "E"] ]

3) DT[x == "E", .I]

Rag*_*aac 28

set.seed(400)
library(data.table)

DT <- data.table(x = sample(LETTERS[1:5], 20, TRUE), key = "x"); DT
Run Code Online (Sandbox Code Playgroud)

1)

DT[  , .I[x == "E"] ] # [1] 18 19 20
Run Code Online (Sandbox Code Playgroud)

是一个data.table,其中.I是一个向量,表示EORIGINAL数据集中的行号DT

2)

DT[J("E")  , .I]   # [1] 1 2 3

DT["E"     , .I]   # [1] 1 2 3

DT[x == "E", .I]   # [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

生成一个向量,其中.Is是表示ENEW子集数据中s 的行号的向量