Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ceiling_date doesn't work if NA present #486

adibender opened this issue Oct 22, 2016 · 1 comment

ceiling_date doesn't work if NA present #486

adibender opened this issue Oct 22, 2016 · 1 comment


Copy link

@adibender adibender commented Oct 22, 2016

As of version 1.6.0, ceiling_date stopped working if the vector contains NA and unit minute, hour, or day (used to work in 1.5.6)

dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
times <- c("23:03:20", "22:29:56", "01:03:30", "18:21:03", "16:56:26")
x <- paste(dates, times)
times <- strptime(x, "%m/%d/%y %H:%M:%S")
times[2] <- NA

floor_date(times, unit="day") # works fine 
ceiling_date(times, unit="day") # breaks
Error in `[<-.POSIXlt`(`*tmp*`, not_same, value = c(699231600, NA, 695430000,  : 
  NAs are not allowed in subscripted assignments

These are the offending lines in round.R (if new or new1 contain NA):

not_same <- new1 != new
new1[not_same] <- new1[not_same] + delta
Copy link

@cderv cderv commented Oct 24, 2016


I think we could make it work changing the subsetting with:

not_same <- which(new1 != new)
new1[not_same] <- new1[not_same] + delta

There is no error on subsetting this way and NA is still NA.

@vspinu, if you are ok with this fix I could make a PR adding some test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

2 participants