Ответ 1
Похоже, я забыл обновить этот пост.
Это было исправлено долго в фиксации # 1039 версии 1.1. Из НОВОСТИ:
Исправлено
#5106
гдеDT[, .N, by=y]
, гдеy
- это вектор сlength(y) = nrow(DT)
, ноy
не является столбцом вDT
. Благодаряcolinfang
для отчетности.
Тестирование на v1.8.11 commit 1187:
require(data.table)
test <- data.table(x=sample.int(10, 1000000, replace=TRUE))
y <- test$x
system.time(ans1 <- test[,.N, by=x])
# user system elapsed
# 0.015 0.000 0.016
system.time(ans2 <- test[,.N, by=y])
# user system elapsed
# 0.015 0.000 0.015
setnames(ans2, "y", "x")
identical(ans1, ans2) # [1] TRUE