mache ich häufig
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
Es wäre schön, wenn ich colA
und colB
seltener schreiben könnte. Das FR hier ist für
CJ(colA, colB, unique=TRUE, names=TRUE)
um die Namen colA
und colB
abzuleiten, vielleicht mit der Methode, die von data.frame() und data.table() verwendet wird ( make.names
?).
(Die Namenswiederholung könnte weiter reduziert werden, wenn on=.Icols
eine Sache wäre, nehme ich an, aber ich lasse das für ein separates FR.)
SO Beiträge zum Aktualisieren...
CJ
nimmt ...
als erstes Argument, und diese Funktion wird eine generische Methode sein, also AFAIK müssen wir sie in CJ(x, ...)
ändern, diese Änderungen können zusammen vorgenommen werden # 1090
+1 und ich sehe keine Notwendigkeit für das Argument names
- dies sollte das einzige Verhalten sein. Mit der Änderung der Join-Syntax zur Verwendung von "on" anstelle von setkey
dies für mich zu einem großen Knackpunkt geworden.
Ich würde auch gerne unique = TRUE
als Standard sehen - ich kann mir nicht vorstellen, _jemals_ die Argumente nicht eindeutig auf CJ
.
@jangorecki Ich habe das Zeug Nr. 1090 / Nr. 814 noch nicht
Hilfreichster Kommentar
+1 und ich sehe keine Notwendigkeit für das Argument
names
- dies sollte das einzige Verhalten sein. Mit der Änderung der Join-Syntax zur Verwendung von "on" anstelle vonsetkey
dies für mich zu einem großen Knackpunkt geworden.Ich würde auch gerne
unique = TRUE
als Standard sehen - ich kann mir nicht vorstellen, _jemals_ die Argumente nicht eindeutig aufCJ
.