R's data.table Truncating Bits?

Entonces soy un grandata.table fan en R. Lo uso casi todo el tiempo, pero me he encontrado con una situación en la que no me funcionará en absoluto. Tengo un paquete (interno de mi empresa) que usa R'sdouble para almacenar el valor de un entero de 64 bits sin signo cuya secuencia de bits corresponde a alguna codificación elegante. Este paquete funciona muy bien en todas partes, excepto data.table. Descubrí que si agrego en una columna de estos datos, pierdo una gran cantidad de mis valores únicos. Mi única suposición aquí es quedata.table está truncando bits en algún tipo de extrañodouble mejoramiento.

¿Alguien puede confirmar que este es el caso? ¿Es esto simplemente un error?

A continuación, vea una reproducción del problema y una comparación con el paquete que actualmente debo usar pero que quiero evitar con pasión (dplyr)

temp <- structure(list(obscure_math = c(6.95476896592629e-309, 6.95476863436446e-309, 
6.95476743245288e-309, 6.95476942182375e-309, 6.95477149408563e-309, 
6.95477132830476e-309, 6.95477132830476e-309, 6.95477149408562e-309, 
6.95477174275702e-309, 6.95476880014538e-309, 6.95476896592647e-309, 
6.95476896592647e-309, 6.95476900737172e-309, 6.95476900737172e-309, 
6.95476946326899e-309, 6.95476958760468e-309, 6.95476958760468e-309, 
6.95477020928318e-309, 6.95477124541406e-309, 6.95476859291965e-309, 
6.95476875870014e-309, 6.95476904881676e-309, 6.95476904881676e-309, 
6.95476904881676e-309, 6.95476909026199e-309, 6.95476909026199e-309, 
6.95476909026199e-309, 6.95476909026199e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.9547691317072e-309, 
6.9547691317072e-309, 6.9547691317072e-309, 6.95477211576406e-309, 
6.95476880014538e-309, 6.95476880014538e-309, 6.95476880014538e-309, 
6.95476892448104e-309, 6.95476880014538e-309, 6.95476892448105e-309, 
6.9547689659263e-309, 6.95476913170719e-309, 6.95476933893334e-309
)), .Names = "obscure_math", class = c("data.table", "data.frame"), row.names = c(NA, 
-50L))

dt_collapsed <- temp[, .(count=.N), by=obscure_math]
nrow(dt_collapsed) == length(unique(temp$obscure_math))

setDF(temp)
dplyr_collapsed <- temp %>% group_by(obscure_math) %>% summarise(count=n())
nrow(dplyr_collapsed) == length(unique(temp$obscure_math))

Respuestas a la pregunta(1)

Su respuesta a la pregunta