评价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