Eu freqüentemente faço
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
Seria bom se eu pudesse escrever colA
e colB
menos vezes. O FR aqui é para
CJ(colA, colB, unique=TRUE, names=TRUE)
para inferir os nomes colA
e colB
, talvez usando qualquer método usado por data.frame () e data.table () ( make.names
?).
(A repetição do nome poderia ser reduzida ainda mais se on=.Icols
fosse uma coisa, suponho, mas deixarei isso para um FR separado.)
Postagens SO para atualizar ...
CJ
leva ...
como primeiro argumento, e essa função vai ser um método genérico, então AFAIK precisaremos mudá-lo para CJ(x, ...)
, essas mudanças podem ser feitas juntas # 1090
+1 e não vejo a necessidade do argumento names
- este deve ser o único comportamento. Com a alteração da sintaxe de junção para usar "on" em vez de setkey
isso se tornou um grande obstáculo para mim.
Eu também gostaria de ver unique = TRUE
como o padrão - eu não consigo pensar em _nunca_ não precisando unir os argumentos para CJ
.
@jangorecki Eu não
Comentários muito úteis
+1 e não vejo a necessidade do argumento
names
- este deve ser o único comportamento. Com a alteração da sintaxe de junção para usar "on" em vez desetkey
isso se tornou um grande obstáculo para mim.Eu também gostaria de ver
unique = TRUE
como o padrão - eu não consigo pensar em _nunca_ não precisando unir os argumentos paraCJ
.