Я пытаюсь передать два набора имен столбцов для работы и что-то с ними сделать, используя dplyr.Обычно для одного набора я использовал бы многоточие (...) и конвертировал его в фразы с помощью enquos ().Но теперь у меня есть два набора имен столбцов, поэтому я подумал об использовании списков для их хранения.Как мне сделать эту работу наиболее эффективным способом?(Ответы с использованием функций purrr, rlang и любых других пакетов приветствуются)
Пакеты и пример данных
library(dplyr) #I use whole library(tidyverse) but this is sufficient for this case
some.data <- tibble(col1 = sample(letters[1:3], 500, replace = T),
col2 = sample(letters[1:3], 500, replace = T),
col3 = sample(letters[4:6], 500, replace = T),
col4 = sample(letters[4:6], 500, replace = T))
Моя функция (проще говоря) выглядит следующим образом:
cross_table <- function(data = NULL, list1 = NULL, list2 = NULL){
for(l1 in list1){
for(l2 in list2){
data.out <- data %>%
count(l1, l2) %>%
spread(l2, n, fill = 0, drop = FALSE)
print(data.out) #Just to show it works. I want to use 'data.out' object later on
}
}
}
и я хочу использовать такую функцию (без указания имен столбцов в виде строк)
some.data %>%
cross_table(list1 = list(col1, col2), list2 = list(col3, col4))