评价dplyr :: case_when()

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)并且它们不一定是因为它们已经是字符串。

以上是 评价dplyr :: case_when() 的全部内容, 来源链接: utcz.com/qa/260600.html

回到顶部