Nach einem Beispiel in der Dokumentation dplyr::case_when()
gegeben:Auswertung in dplyr :: case_when()
x <- 1:50
case_when(x %% 35 == 0 ~ "fizz buzz",
x %% 5 == 0 ~ "fizz",
x %% 7 == 0 ~ "buzz",
TRUE ~ as.character(x))
Ich gehe davon aus, dass die Zahl 35
wird "buzz"
produzieren, aber es produziert "fizz buzz"
Meine Argumentation ist, dass case_when()
auswertet Alle Anweisungen eins nach dem anderen, unabhängig davon, ob eine vorherige wahr ist oder nicht (da TRUE ~ as.character(x)
die letzte ist) und 35 %% 7
ist offensichtlich 0.
Was fehlt mir?
Die Anweisungen werden der Reihe nach ausgewertet, und alles, was mit der ersten Anweisung übereinstimmt, erhält das erste Ergebnis und wird von späteren Ergebnissen nicht überschrieben. – Marius
Ich bin immer noch verwirrt, warum diese letzte Anweisung TRUE ~ as.character (x) ausgewertet wird. – tictocchoc
Es gibt "x" -Werte, die nicht durch 35, 5 oder 7 teilbar sind - es bleiben also noch Werte übrig, nachdem die ersten 3 Anweisungen behandelt wurden. Wenn Sie immer noch verwirrt sind, können Sie versuchen, genauer zu erklären, warum Sie denken, dass etwas anderes passieren sollte? – Marius