我正在寻找一个union
时间间隔的实现,它能够处理本身不是间隔的联合。
我注意到lubridate
包括一个union
时间间隔的函数,但它总是返回一个间隔,即使联合不是一个间隔(即它返回由两个开始日期的最小值和两个结束日期的最大值定义的间隔,忽略不由任一区间覆盖):
library(lubridate)
int1 <- new_interval(ymd("2001-01-01"), ymd("2002-01-01"))
int2 <- new_interval(ymd("2003-06-01"), ymd("2004-01-01"))
union(int1, int2)
# Union includes intervening time between intervals.
# [1] 2001-01-01 UTC--2004-01-01 UTC
我也看过这个interval
包,但它的文档没有提到union
.
我的最终目标是使用复杂的联合%within%
:
my_int %within% Reduce(union, list_of_intervals)
因此,如果我们考虑一个具体的例子,假设list_of_intervals
是:
[[1]] 2000-01-01 -- 2001-01-02
[[2]] 2001-01-01 -- 2004-01-02
[[3]] 2005-01-01 -- 2006-01-02
then my_int <- 2001-01-01 -- 2004-01-01
is not %within%
the list_of_intervals
so it should returnFALSE
和my_int <- 2003-01-01 -- 2006-01-01
is so it should be TRUE
。
但是,我怀疑复杂联合的用途不止于此。