首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dplyr::case_when()中的评价

dplyr::case_when()中的评价
EN

Stack Overflow用户
提问于 2017-12-18 02:55:18
回答 1查看 2.7K关注 0票数 1

下面是dplyr::case_when()文档中的一个示例:

代码语言:javascript
复制
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。

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-18 03:48:21

case_when()逐个计算所有语句,不管前一个语句是否为真(因为它确实计算了true ~ as.character(x),这是最后一个语句)

这是误导性的,case_when()的输出是基于第一个正确的语句。

TRUE ~ as.character(x)意味着如果x不能被5或7整除,那么x将作为字符串(x=5)返回,"5“将被返回。

如果x可除以5或7,则casewhen()不计算后续情况。"fizz“和"buzz”不传递给as.character(x),也不一定是因为它们已经是字符串了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47861568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档