Я пытаюсь динамически создать дополнительный столбец. Первый фрагмент кода работает так, как я хочу:
library(dplyr)
library(tidyr)
set.seed(1)
df <- data.frame(animals = sample(c('dog', 'cat', 'rat'), 100, replace = T))
my_fun <- function(data, column_name){
data %>% group_by(animals) %>%
summarise(!!column_name := n())
}
my_fun(df, 'frequency')
Здесь я также использую полную функцию, и она не работает:
library(dplyr)
set.seed(1)
df <- data.frame(animals = sample(c('dog', 'cat', 'rat'), 100, replace = T))
my_fun <- function(data, column_name){
data %>% group_by(animals) %>%
summarise(!!column_name := n())%>%
ungroup() %>%
complete(animals = c('dog', 'cat', 'rat', 'bat'),
fill = list(!!column_name := 0))
}
my_fun(df, 'frequency')
Функция списка не работаеткажется, что !!column_name :=
Есть ли что-то, что я могу сделать, чтобы сделать эту работу? В основном я хочу, чтобы второй кусок кода вывел:
animals frequency
bat 0
cat 38
dog 27
rat 35