• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

评价dplyr :: case_when()

r 来源:tictocchoc 20次浏览

dplyr::case_when()文档中给出的例子:评价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)) 

我想到的是人数35会产生"buzz"但它产生"fizz buzz"

我的理由是,case_when()评估板无论前一个是否为真(因为它确实评估TRUE ~ as.character(x)这是最后一个),并且该35 %% 7显然是0.

我错过了什么?


===========解决方案如下:

case_when()计算所有语句逐个不管前一个是真的还是假的(因为它评估TRUE〜as.character(X),这是最后一个)

这是误导性的,case_when()的输出是基于第一种说法是正确的。

TRUE ~ as.character(x)意味着如果x不能被5或7整除,那么x将返回一个字符串,即对于x = 5,将返回“5”。

如果x可被5或7整除,则casewhen()不会评估后续情况。 “嘶嘶声”和“嗡嗡声”分别是而不是传递给as.character(x)并且它们不一定是因为它们已经是字符串。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)