Вместо создания нескольких объектов в глобальном окружении скопируйте их в list
и свяжите его
library(data.table)
files <- list.files(pattern = "\\.csv", full.names = TRUE)
rbindlist(lapply(files, fread))
С fread
это было бы намного быстрее, чем в любом другом параметре
Если мы используем строки для передачи на group_by
, преобразуем строку в символ с помощью sym
из rlang
и оцениваем (!!
)
library(purrr)
map2_df(c("condition1", "condition2"), c("a", "b") ~ df1 %>%
group_by(!! rlang::sym(.x)) %>%
summarise(!! .y := mean(colname)))
Если'condition1', 'condition2' и т. д. являются выражениями, поместите его как quosure
и оцените его
map2_df(quos(condition1, condition2), c("a", "b"), ~ df1 %>%
filter(!! .x) %>%
summarise(!! .y := mean(colnames)))
Используя воспроизводимый пример
conditions <- quos(Petal.Length>1.5,Species == 'setosa',Sepal.Length > 5)
map2(conditions, c('a', 'b', 'c'), ~
iris %>%
filter(!! .x) %>%
summarise(!! .y := mean(Sepal.Length)))
#[[1]]
# a
#1 6.124779
#[[2]]
# b
#1 5.006
#[[3]]
# c
#1 6.129661
Это будет 3набор данных столбца, если мы используем map2_dfc
ПРИМЕЧАНИЕ. Неясно, означал ли OP «условие1», «условие2» как выражения, передаваемые для filter
строк или нет.