可以case_when()
在dplyr
返回NA
和非NA
值的混合?可否dplyr :: case_when返回NAs和非NAs的混合?
當我問它響應返回NA
一個聲明,但在回答另一個語句中的非NA
值時,它拋出一個計算錯誤:
例如,我想1
爲cyl >= 6
所有值,和NA
爲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.
當家值,這兩個聲明的評價很好。
如果要求返回所有的NAs,但不是NA
s和非NA
s的混合物,則不存在此問題。
例如: - 返回NA
所有值的cyl >= 6
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ NA))
cyl thing
1 6 NA
2 6 NA
3 4 NA
看起來不錯。
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ NA, cyl < 6 ~ NA))
cyl thing
1 6 NA
2 6 NA
3 4 NA
很酷。
> 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.
不冷靜。
NB:爲清楚起見,在實施例中返回的項目全部從mtcars[1:3,]
與%>% select(cyl, thing)
在表達式的結尾。
沒錯,閱讀TFM了十幾次*現在*我看到「所有RHSS必須評估到後相同類型的矢量「。 –