2014-05-10 25 views
17

我当时玩的是data.table,我遇到了一个我并不确定自己很明白的区别。鉴于以下数据集:了解。我在data.table中的R

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]

回答

23
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是表示行矢量号码E在原始数据集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 

都是相同的,从而产生其中.I s为在NEW表示E S的行数向量的向量数据子集