-
Notifications
You must be signed in to change notification settings - Fork 1k
Closed
Labels
Milestone
Description
I'm taking the max or min of an empty IDate vector, but finding my code breaks since the return value is sometimes float, sometimes integer:
library(data.table)
DT = data.table(d = as.IDate(Sys.Date()), g = 1:2, cond = c(TRUE, FALSE))
DT[, max(d[cond]), by=g]
Error in `[.data.table`(DT, , max(d[cond]), by = g) :
Column 1 of result for group 2 is type 'double' but expecting type 'integer'. Column types must be consistent for each group.
In addition: Warning message:
In max.default(integer(0), na.rm = FALSE) :
no non-missing arguments to max; returning -Inf
Since R's integer storage mode doesn't allow Inf or -Inf, I'm guessing IDate cannot be used for this..? My workaround is dropping to Date class:
DT[, {
d = as.Date(d)
max(d[cond])
}, by=g]
MichaelChirico and mattdowle