Slight reversal to the breaking change before: I had forgotten I was already allowing different group_vars in x and y via providing named group_vars for intervalintersect so this functionality is turned back on. Naming either interval_vars or group_vars in the intervalintersect function is still explicitly disallowed since the functionality of allowing different join column names in x and y for that function is still not implemented.
Rewrote some internals of the intervalintersect function and added a few additional tests. This, combined with the major rewrite of the intervalaverage function in 9009, should hopefully resolve the memory issues that were occurring i386 windows during R CMD CHECK.
POTENTIALLY BREAKING CHANGE: interval_vars and group_vars arguments cannot have names for the intervalaverage function. This is to allow for a future release where x and y could have differently named interval and/or grouping columns. Additionally, in the intervalintersect function group_vars cannot have names for the same reason. intervalintersect already allows for different interval_vars names in x and y via this exact scheme, so named interval_vars arguments to intervalintersect are obviously still allowed.
Turned off some tests when building on CRAN that are likely never going to pass on i386 due to memory issues with the slower non-exported testing/validation function (interval_average_slow_f).
1 . Minor improvements in documentation (readme,intro vignette)
Interval columns used by intervalaverage
, intervalintersect
, and isolateoverlaps
functions (i.e. those columns of x
and y
specified by the interval_vars
argument in all of those functions) must now be of either class integer
or IDate
. This is a change from previous where columns of class Date
were allowed. Date
objects could have hidden decimals which might cause problems in this function which is written to deal with only discrete time. Changing Dates to IDates should fix existing code.
intervalaverage
now restores the keys of x and y to their state prior to the function call if x and y are not already keyed on c(group_vars,interval_vars) and prints a message recommending that the keys be set first (to avoid unsetting the key at the end of the function if you don’t care about the order). This is a breaking change only if code relied on intervalaverage
changing the key.
isolateoverlaps
no longer sets the key of x internal to the function as this was never necessary for the foverlaps call to work. This should reduce the possibility of side-effects for this function even though x is still passed by reference. This fixes the problem that the key of x might changed if the function returns an error (the function was already written to restore the key of x if it successfully completed).
CJ.dt no longer passes-by-references the data.tables provided as arguments in ...
; While this may add some more memory usage and processing time to copy the table, it really shouldn’t matter since if you don’t have memory to copy a table you don’t have memory to cartesian join it with another table.
is.overlapping
now restores the key and column order of x to its original state even if the function returns an error.