Ich versuche, eine einfache Funktion um die Funktion dplyr :: case_when() zu wickeln. Ich lese die Programmierung mit dplyr Dokumentation auf https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html aber kann nicht herausfinden, wie dies mit der case_when() Funktion funktioniert.Tidy Auswertung Programmierung mit dplyr :: case_when
Ich habe folgende Daten:
data <- tibble(
item_name = c("apple", "bmw", "bmw")
)
Und die folgende Liste:
cat <- list(
item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"
)
Dann würde Ich mag eine Funktion schreiben wie:
category_fn <- function(df, ...){
cat1 <- quos(...)
df %>%
mutate(category = case_when((!!!cat1)))
}
Leider category_fn(data,cat)
eine gibt Bewertungsfehler in diesem Fall. Ich möchte die gleiche Ausgabe erhalten wie die Ausgabe von:
data %>%
mutate(category = case_when(item_name == "apple" ~ "fruit",
item_name == "bmw" ~ "car"))
Was ist der Weg, dies zu tun?
Dies sollte aus der Box funktionieren, gibt es ein GitHub-Problem dafür: https://github.com/tidyverse/dplyr/issues/3133. Verwenden Sie vorerst eine der in der Antwort vorgeschlagenen Alternativen. – krlmlr