为什么case_when序列中的最后一个个案通常称为TRUE?

时间:2019-05-24 15:04:14

标签: r dplyr

我知道这个案例定义了在没有满足任何先前案例的情况下该怎么做,但是为什么它被称为“ TRUE”而不是“ ELSE”?

library(dplyr)

mtcars %>%
  mutate(new = case_when(
    cyl == 4 ~ "weak",
    cyl == 6 ~ "medium",
    TRUE ~ "other"
  ))

1 个答案:

答案 0 :(得分:4)

首先,如import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class Example { //reads the encrypted password, decrypts it // and injects it in the field DataBasePassword @Value("${DataBase.Password}") private String DataBasePassword; @RequestMapping("/") public String decryptPassword() { return DataBasePassword; } public static void main(String[] args) { SpringApplication.run(Example.class, args); } } 所说,

  

LHS必须评估为逻辑向量。

这意味着不允许使用ELSE之类的东西,因为它不是逻辑值。但是,也许有人仍然想知道为什么我们不能使用FALSE。

这是您的示例中所有内容的工作方式。首先,我们在所有行中查看?case_whencyl == 4的情况,并将相应的新值设置为TRUE。其次,在剩余的 行中,我们寻找"weak"cyl == 6并在其中使用TRUE。如果我们在这里停止,那么

  

如果没有匹配的情况,则返回NA。

那么,我们如何处理其余的行呢?在其余每种情况下,"medium"(使用回收)通常为TRUE,允许返回TRUE

因此,这是LHS必须具有逻辑性以及处理特定情况的顺序方式的组合。