Другая причина выбора if_else
вместо ifelse
состоит в том, что ifelse
превращает Date
в numeric
объекты
Dates <- as.Date(c('2018-10-01', '2018-10-02', '2018-10-03'))
new_Dates <- ifelse(Dates == '2018-10-02', Dates + 1, Dates)
str(new_Dates)
#> num [1:3] 17805 17807 17807
if_else
также быстрее, чем ifelse
.
Обратите внимание, что при тестировании нескольких условий код будет более читабельным и менее подверженным ошибкам, если мы используем case_when
.
library(dplyr)
case_when(
Dates == '2018-10-01' ~ Dates - 1,
Dates == '2018-10-02' ~ Dates + 1,
Dates == '2018-10-03' ~ Dates + 2,
TRUE ~ Dates
)
#> [1] "2018-09-30" "2018-10-03" "2018-10-05"
Создано в 2018-06-01 представляет пакет (v0.2.0).