Использование data.table
может быть хороший подход к эффективности использования памяти.
Идея здесь состоит в том, чтобы переформатировать данные в длинный формат, отсортировать значения для каждого автомобиля, а затем выбрать 7 лучших для каждой группы.
Вы можете использование результат, как вы, в том числе paste
ИНГ результаты, чтобы сделать новую переменную
library(data.table)
dt_mtcars <- as.data.table(mtcars, keep.rownames = T)
## melt the data into long form so we can sort it by one column
dt_mtcars <- melt(dt_mtcars, id.vars = "rn")
## order by group (rowname), and pick the top 7
setorder(dt_mtcars, rn, -value)
dt <- dt_mtcars[ dt_mtcars[, .I[c(1:7)], by = rn ]$V1 ]
## create a new column, consisting of the names of the 'rownames' of those top 7
dt[, paste0(variable, collapse = " "), by = rn]
rn V1
1: AMC Javelin disp hp qsec mpg cyl wt drat
2: Cadillac Fleetwood disp hp qsec mpg cyl wt carb
3: Camaro Z28 disp hp qsec mpg cyl carb wt
4: Chrysler Imperial disp hp qsec mpg cyl wt carb
5: Datsun 710 disp hp mpg qsec cyl gear drat
... etc