¿Cómo obtener la longitud del grupo actual en agrupación data.table?

Sé que esto se puede lograr con otros paquetes, pero estoy tratando de hacerlo endata.table (ya que parece ser el más rápido para agrupar).

library(data.table)
dt = data.table(a=c(1,2,2,3))
dt[,length(a),by=a]

resultados en

   a V1
1: 1  1
2: 2  1
3: 3  1

mientras

df = data.frame(a=c(1,2,2,3))
ddply(df,.(a),summarise,V1=length(a))

produce

  a V1
1 1  1
2 2  2
3 3  1

Que es un resultado más sensible. Solo preguntandome porquedata.table No está dando los mismos resultados, y cómo se puede lograr esto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta