私は頻繁に行います
DT[CJ(colA = colA, colB = colB, unique=TRUE), on=c("colA","colB")]
# to complete missing levels
# or
DT[, CJ(colA = colA, colB = colB, unique=TRUE)][!DT, on=c("colA","colB")]
# to identify missing levels
# http://stackoverflow.com/a/36065607/1191259
colA
とcolB
書き込み回数を減らすことができれば、それは素晴らしいことです。 ここのFRは
CJ(colA, colB, unique=TRUE, names=TRUE)
colA
とcolB
の名前を推測するには、おそらくdata.frame()とdata.table()( make.names
?)で使用されるメソッドを使用します。
( on=.Icols
が問題である場合は、名前の繰り返しをさらに減らすことができると思いますが、別のFRに残しておきます。)
更新するSO投稿...
CJ
は最初の引数として...
を取り、その関数はジェネリックメソッドになるので、AFAIKでCJ(x, ...)
に変更する必要があります。これらの変更は、一緒に行うことができます。 1090
+1と私はnames
引数の必要性を見ていません-これが唯一の動作であるはずです。 結合構文がsetkey
代わりに「on」を使用するように変更されたことで、これは私にとって大きな問題になりました。
また、 unique = TRUE
デフォルトにしたいと思います。 CJ
引数を一意にする必要がないことは考えられません。
@ jangorecki #1090 /#814のものにはまだ触れていません。 何かが足りない場合を除いて、自己完結型の方が良いと思います
最も参考になるコメント
+1と私は
names
引数の必要性を見ていません-これが唯一の動作であるはずです。 結合構文がsetkey
代わりに「on」を使用するように変更されたことで、これは私にとって大きな問題になりました。また、
unique = TRUE
デフォルトにしたいと思います。CJ
引数を一意にする必要がないことは考えられません。