Объединить все столбцы data.table, не ссылаясь на них по имени

Я хотел бы сделать эквивалент следующего, но с data.table "by":

dt <- data.table(V1=rnorm(100), V2=rnorm(100), V3=rnorm(100), ...
                 group=rbinom(100,2,.5))
dt.agg <- aggregate(dt, by=list(dt$group), FUN=mean)

Я знаю, что я мог сделать это:

dt.agg <- dt[, list(V1=mean(V1), V2=mean(V2), V3=mean(V3)), by=group]

Но для рассматриваемого случая у меня есть около 100 столбцов V1-V100 (и я всегда хочу объединить их все по одному коэффициенту, как в приведенном выше агрегировании), поэтому решение data.table, которое я получил выше, не является ' это возможно.

Ответы

Ответ 1

dt[, lapply(.SD, mean), by=group]

Чтобы указать столбцы:

dt[,...,by=group, .SDcols=c("V1", "V2", "V3", ...)]
dt[,...,by=group, .SDcols=names(dt)[1:100]]