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