Как предотвратить превращение объектов Date в ifelse () в числовые объекты

Я использую функцию 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 указывает, что это особенность, а не ошибка, но я все еще пытается найти объяснение тому, что я считаю удивительным поведением.

135
задан Henrik 29 June 2016 в 07:34
поделиться