< p >在< code >dplyr中,< code >case_when()能否返回混合的< code >NA和非< code >NA值?
< p >当我要求它在响应一个语句时返回< code >NA,但在响应另一个语句时返回非< code >NA值时,它会抛出一个评估错误:
< p >例如,我希望对于所有< code >cyl >= 6的值返回< code >1,并且对于< code >cyl <6的值返回< code >NA
很棒。
> library("dplyr")
> mtcars %>% mutate(thing = case_when(cyl >= 6 ~ 1, cyl < 6 ~ NA ))
mutate_impl(.data, dots) 中出现错误:评估错误:必须是双精度浮点型,而不是逻辑型。
单独执行这两个语句均正常运行。
如果要求返回所有的 NA,而不是混合了 NA 和非 NA 的结果,则不存在此问题。
例如:对于所有 cyl >= 6
的值,返回 NA
> 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 ))
在 mutate_impl(.data, dots) 中出现错误: 评估错误:必须是 double 类型,而不是 logical。(意思是表达式的计算结果应该是 double 类型,但实际得到了 logical 类型)
真不爽。
NB: 为了清晰起见,在示例中返回的项都来自于 mtcars[1:3,]
,并以 %>% select(cyl, thing)
结尾。