Я использую функцию ifelse()
для манипулирования вектором даты. Я ожидал, что результат будет класса Date
, и был удивлен, получив вместо этого вектор numeric
. Вот пример:
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04', '2011-01-05'))
dates <- ifelse(dates == '2011-01-01', dates - 1, dates)
str(dates)
Это особенно удивительно, потому что выполнение операции по всему вектору возвращает объект Date
.
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
Должен ли я использовать какую-то другую функцию для работы с Date
векторами? Если так, то какая функция? Если нет, то как заставить ifelse
возвращать вектор того же типа, что и вход?
Страница справки для ifelse
указывает, что это особенность, а не ошибка, но я все еще пытается найти объяснение тому, что я считаю удивительным поведением.