Я пытаюсь написать собственную функцию case_when для использования внутри dplyr. Я перечитывал примеры, приведенные в других вопросах, но до сих пор не могу понять, как заставить это работать. Вот пример:
df1 <- data.frame(animal_1 = c("Horse", "Pig", "Chicken", "Cow", "Sheep"),
animal_2 = c(NA, NA, "Horse", "Sheep", "Chicken"))
translate_title <- function(data, input_col, output_col) {
mutate(data,
!!output_col := case_when(
input_col == "Horse" ~ "Cheval",
input_col == "Pig" ~ "Рorc",
input_col == "Chicken" ~ "Poulet",
TRUE ~ NA)
)
}
df1 %>%
translate_title("animal_1", "animaux_1") %>%
translate_title("animal_2", "animaux_2")
Когда я пытаюсь запустить это, я получаю Error in mutate_impl(.data, dots) : Evaluation error: must be type string, not logical.
Также я бы хотел переписать функцию, чтобы ее можно было использовать следующим образом :
df1 %>%
mutate(animaux_1 = translate_title(animal_1),
animaux_2 = translate_title(animal_2)
)
Но не уверен, как.