Мы можем использовать .SD
, чтобы выбрать столбцы на основе логического вектора
library(data.table)
a[, .SD[, colSums(.SD)>500, with = FALSE],.SDcols=setdiff(names(a),c("vs","am"))]
Если мы хотим сделать rowSums
, просто используйте это как индекс
d <- a[, .SD[rowSums(.SD)>300],.SDcols=-c(8,9)]
Или с Reduce
a[, .SD[Reduce(`+`, .SD) > 300], .SDcols = -c(8, 9)]
Если нам нужно получить все столбцы, используйте .I
вместо .SD
a[a[, .I[Reduce(`+`, .SD) > 300], .SDcols = -c(8, 9)]]