_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]
_
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は、新しいサブセット化されたデータのE
sの行番号を表すベクトルです。