Сложно сформулировать мой вопрос (следовательно, сложно эффективно искать в архивах...). Код ниже должен быть ясным.
Почему во второй команде последнее имя столбца вывода не является "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