I am using the function
ifelse() to manipulate a date vector. I expected the result to be of class
Date, and was surprised to get a
numeric vector instead. Here is an example:
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)
This is especially surprising because performing the operation across the entire vector returns a
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
Should I be using some other function to operate on
Date vectors? If so, what function? If not, how do I force
ifelse to return a vector of the same type as the input?
The help page for
ifelse indicates that this is a feature, not a bug, but I'm still struggling to find an explanation for what I found to be surprising behavior.