J'utilise la fonction ifelse()
pour manipuler un vecteur de date. Je m'attendais à ce que le résultat soit de la classe Date
et j'ai été surpris de recevoir un numeric
à la place. Voici un exemple :
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)
Ceci est particulièrement surprenant car l'exécution de l'opération sur l'ensemble du vecteur renvoie un Date
objet.
dates <- as.Date(c('2011-01-01', '2011-01-02', '2011-01-03', '2011-01-04','2011-01-05'))
dates <- dates - 1
str(dates)
Devrais-je utiliser une autre fonction pour opérer sur Date
vecteurs ? Si oui, quelle fonction ? Si non, comment puis-je forcer ifelse
pour retourner un vecteur du même type que l'entrée ?
La page d'aide de ifelse
indique qu'il s'agit d'une fonctionnalité et non d'un bogue, mais je m'efforce toujours de trouver une explication à ce comportement que j'ai trouvé surprenant.