次のdata.frameと次のdata.tableがあるとしましょう。
DF = data.frame(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
Data.frameを使用すると、次のように論理ベクトルに基づいて列を選択できます。
DF[,c(TRUE,TRUE,FALSE)]
結果は次のとおりです。
x y
1 a 1
2 a 3
3 a 6
4 b 1
5 b 3
6 b 6
7 c 1
8 c 3
9 c 6
しかしながら
DT[,c(TRUE,TRUE,FALSE)]
につながる:
[1] TRUE TRUE FALSE
どうすればそれができますか?
with=FALSE
が必要です
DT[, c(TRUE, TRUE, FALSE), with=FALSE]
?data.table
のドキュメントに基づく
デフォルトでは、with = TRUEであり、jはxのフレーム内で評価されます。列名は変数として使用できます。 with = FALSEの場合、jは選択する列名の文字ベクトルまたは列位置の数値ベクトルであり、返される値は常にdata.tableです。 with = FALSEは、data.tableで列を動的に選択するのに役立つことがよくあります。