Не использовать assign
.Вместо этого используйте списки.
Мы можем использовать _at
вариации dplyr
, которые работают с символьными переменными.
library(dplyr)
split_fun <- function(df, col) {
df %>% group_by_at(col) %>% summarise(n = n()) %>% arrange_at(col)
}
, а затем используйте lapply
/ map
, чтобы применить его к разным столбцам
purrr::map(column_list, ~split_fun(data, .))
Это вернет вам список фреймов данных, доступ к которым можно получить с помощью [[
индивидуально при необходимости.
Использование примера с mtcars
df <- mtcars
column_list <- c ('cyl', 'gear', 'carb')
purrr::map(column_list, ~split_fun(df, .))
#[[1]]
# A tibble: 3 x 2
# cyl n
# <dbl> <int>
#1 4 11
#2 6 7
#3 8 14
#[[2]]
# A tibble: 3 x 2
# gear n
# <dbl> <int>
#1 3 15
#2 4 12
#3 5 5
#[[3]]
# A tibble: 6 x 2
# carb n
# <dbl> <int>
#1 1 7
#2 2 10
#3 3 3
#4 4 10
#5 6 1
#6 8 1