Document as.IDate() behaviour with fractional dates

Ouverte Adaptée aux débutants
#7,952 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
1/5
Temps estimé
Moins d'une heure
Accessibilité débutants
78/100
Type d'issue
Documentation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
r
Domaine
documentation

Piste de recherche

Le comportement provient de as.IDate() pour les entrées de type Date, qui passent par as.integer() et arrondissent donc vers l'époque ; les exemples du rapport montrent la différence avec un arrondi vers le bas préalable. Trouve la documentation de as.IDate (son fichier Rd ou le bloc roxygen) et ajoute une courte note indiquant que les valeurs Date fractionnaires sont tronquées vers zéro, avec l'exemple de l'issue. C'est terminé lorsque la page d'aide mentionne l'arrondi et que les exemples s'exécutent toujours.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

beginner-task

as.IDate() calls as.integer() on Date input which means fractional dates are rounded towards the unix epoch. This leads to the following behaviour.

(origin <- .Date(0))
#> [1] "1970-01-01"
(dates <- c(origin - 0.2, origin + 0.2))
#> [1] "1969-12-31" "1970-01-01"
data.table::as.IDate(dates)
#> [1] "1970-01-01" "1970-01-01"

# I believe this is being done internally with the 'Date' method
as.integer(dates)
#> [1] 0 0

# Alternative is to floor first
as.integer(floor(unclass(dates)))
#> [1] -1  0

To me flooring is the more 'expected' result so (assuming it is not something you wish to change) is it worth pointing this behaviour out explicitly in the documentation. Apologies if I've missed this but couldn't see it mentioned.

Langage dominant
R
Étoiles
3.9k
Forks
1.1k
Merge moyen
1 j 8 h
PR mergées (30 j)
14

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Rdatatable/data.table

Toutes les issues de Rdatatable/data.table

Issues similaires

Plus d'issues R

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.