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