Подтвердить что ты не робот

Data.table: имя столбца, не работающее с j = c(), и

Сложно сформулировать мой вопрос (следовательно, сложно эффективно искать в архивах...). Код ниже должен быть ясным.

Почему во второй команде последнее имя столбца вывода не является "nb_ob"? c(lapply(.SD, mean), nb_obs = .N) должен предоставить именованный список с 4 элементами, которые должны стать столбцом в конечном результате.

Любопытно c(lapply(.SD[,1:4], mean), nb_obs = .N) (третья команда) предоставляет предполагаемый результат. Если я удалю аргумент by (последняя команда), я также получу ожидаемое имя столбца (с предупреждением для столбца символов "Виды" ).

Выполнение кода с помощью data.table_1.10.4, R версии 3.4.1 для Ubuntu 16.04.3 LTS (я могу предоставить больше, если необходимо)

iris <- data.table(iris)
iris[, c(lapply(.SD, mean), nb_obs = .N), by = Species] # 2nd command
#       Species Sepal.Length Sepal.Width Petal.Length Petal.Width  N
# 1:     setosa        5.006       3.428        1.462       0.246 50
# 2: versicolor        5.936       2.770        4.260       1.326 50
# 3:  virginica        6.588       2.974        5.552       2.026 50

iris[, c(lapply(.SD[,1:4], mean), nb_obs = .N), by = Species] # 3rd command
#       Species Sepal.Length Sepal.Width Petal.Length Petal.Width nb_obs
# 1:     setosa        5.006       3.428        1.462       0.246     50
# 2: versicolor        5.936       2.770        4.260       1.326     50
# 3:  virginica        6.588       2.974        5.552       2.026     50

iris[, c(lapply(.SD, mean), nb_obs = .N)] # Fourth command
#    Sepal.Length Sepal.Width Petal.Length Petal.Width Species nb_obs
# 1:     5.843333    3.057333        3.758    1.199333      NA    150
4b9b3361

Ответ 1

Это проблема в бэклоге проекта data.table, возникшая на основе этого вопроса:


  Этот ответ основан на комментарии @Frank выше.