Document as.IDate() behaviour with fractional dates

Aberta Para iniciantes
#7,952 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
1/5
Tempo estimado
Menos de uma hora
Facilidade para iniciantes
78/100
Tipo de issue
Documentação
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
r
Domínio
documentation

Direção de pesquisa

O comportamento vem de as.IDate() para entradas do tipo Date, que passa por as.integer() e por isso arredonda em direção à época; os exemplos do relatório mostram a diferença em relação a truncar primeiro. Encontre a documentação de as.IDate (o arquivo Rd ou o bloco roxygen) e adicione uma nota curta informando que valores Date fracionários são truncados em direção a zero, com o exemplo da issue. Está pronto quando a página de ajuda indica o arredondamento e os exemplos continuam sendo executados.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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.

Linguagem predominante
R
Estrelas
3.9k
Forks
1.1k
Merge médio
1d 8h
PRs com merge (30d)
14

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Rdatatable/data.table

Todas as issues de Rdatatable/data.table

Issues semelhantes

Mais issues de R

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.