Kann case_when()
in dplyr
eine Mischung aus NA
und nicht Werte zurückgeben?Kann dplyr :: case_when eine Mischung aus NAs und Nicht-NAs zurückgeben?
Wenn ich frage es NA
in Reaktion auf eine Anweisung zurück, aber ein nicht NA
Wert in Antwort auf eine andere Aussage, wirft sie einen Bewertungsfehler:
Eg, ich will 1
für alle Werte von cyl >= 6
, und NA
für Werte von cyl < 6
> library("dplyr")
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ 1, cyl < 6 ~ NA))
Error in mutate_impl(.data, dots) : Evaluation error: must be type double, not logical.
Allein, beide der Aussagen bewerten in Ordnung.
Dieses Problem tritt nicht auf, wenn nach allen zurückgegebenen NAs gefragt wird, aber nicht nach einer Mischung aus NA
s und nicht s.
z.B .: NA
Return für alle Werte von cyl >= 6
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ NA))
cyl thing
1 6 NA
2 6 NA
3 4 NA
gut aussieht.
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ NA, cyl < 6 ~ NA))
cyl thing
1 6 NA
2 6 NA
3 4 NA
Kühl.
> mtcars[1:3,] %>% mutate(thing = case_when(cyl == 6 ~ 1, cyl < 6 ~ NA, cyl > 6 ~ NA))
Error in mutate_impl(.data, dots) : Evaluation error: must be type double, not logical.
Nicht cool.
Hinweis: Zur Verdeutlichung sind die zurückgegebenen Elemente in den Beispielen alle von mtcars[1:3,]
mit %>% select(cyl, thing)
am Ende des Ausdrucks.
Yep
Auch
für den zweiten Fall übereinstimmen, nachdem TFM * jetzt ein Dutzend Mal zu lesen * Ich sehe „All RHSS auf die bewerten müssen gleiche Art von Vektor. " –