Data.table: FR: atribua nomes a CJ () como data.table () faz

Criado em 17 mar. 2016  ·  3Comentários  ·  Fonte: Rdatatable/data.table

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 ...

enhancement

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 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 .

Todos 3 comentários

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

Esta página foi útil?
0 / 5 - 0 avaliações