Почему последний случай в последовательности case_when часто называют TRUE? - PullRequest
1 голос
/ 24 мая 2019

Я знаю, что этот случай определяет, что делать, если ни один из предыдущих случаев не был удовлетворен, но почему он называется «ИСТИНА», а не «ELSE»?

library(dplyr)

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

1 Ответ

4 голосов
/ 24 мая 2019

Во-первых, как говорит ?case_when,

LHS должен вычислять логический вектор.

Это означает, что такие вещи, как ELSE, не допускаются в том виде, как они есть.не логичное значение.Но можно все еще задаться вопросом, скажем, почему мы не можем использовать FALSE.

Вот как все работает в вашем примере.Сначала мы просматриваем все строки для случаев, когда cyl == 4 равно TRUE, и устанавливаем соответствующие новые значения на "weak".Во-вторых, среди оставшихся строк мы ищем так, чтобы cyl == 6 было TRUE и там использовалось "medium".Если мы остановимся здесь, то

Если ни одного случая не совпадает, возвращается NA.

Итак, как нам тогда поступить с оставшимися строками?TRUE (с использованием рециркуляции) - тривиально TRUE в каждом оставшемся случае, что позволяет вернуть "other".

Таким образом, это комбинация LHS, которая должна быть логичной, и последовательный способ работы суказанные случаи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...