data.table no calcula grupos de NA en

Esta pregunta tiene una respuesta parcial.aquí pero la pregunta es demasiado específica y no puedo aplicarla a mi propio problema.

Me gustaría omitir un cálculo potencialmente pesado del grupo de NA al usarby.

library(data.table)

DT = data.table(X = sample(10), 
                Y = sample(10), 
                g1 = sample(letters[1:2], 10, TRUE),
                g2 = sample(letters[1:2], 10, TRUE))

set(DT, 1L, 3L, NA)
set(DT, 1L, 4L, NA)
set(DT, 6L, 3L, NA)
set(DT, 6L, 4L, NA)

DT[, mean(X*Y), by = .(g1,g2)]

Aquí podemos ver que hay hasta 5 grupos, incluidos los(NA, NA) grupo. Considerando que (i) el grupo es inútil (ii) los grupos pueden ser muy grandes y (iii) el cálculo real es más complejo quemean(X*Y) ¿Puedo omitir el grupo de manera eficiente? Quiero decir, sin crear una copia de la tabla restante. De hecho, los siguientes trabajos.

DT2 = data.table:::na.omit.data.table(DT, cols = c("g1", "g2"))
DT2[, mean(X*Y), by = .(g1,g2)]

Respuestas a la pregunta(1)

Su respuesta a la pregunta