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

36

我在尝试使用 data.table 的时候,发现了一个我不太理解的区别。给定以下数据集:

library(data.table)

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

请您解释一下以下表达式之间的区别:

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

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

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

1个回答

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

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

1)

DT[  , .I[x == "E"] ] # [1] 18 19 20

这是一个 data.table,其中 .I 是表示在原始数据集 DTE 的行号的向量。

2)

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

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

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

它们都是相同的,生成一个向量,其中.I是表示E在新的子集数据中行号的向量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接