You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

lubridate中setdiff报错:拆分时间区间时出现不连续错误

解决lubridate区间拆分的报错问题

你遇到的报错是因为lubridate的setdiff()函数对Interval类型有严格限制:它只允许返回单个连续的区间,而test_int_1减去test_int_2会生成两个不连续的时间段(test_int_2之前、之后的部分),不符合函数的返回要求,所以抛出"discontinuous intervals"错误。

要拆分出你需要的三个区间段,直接手动提取即可,代码如下:

library(lubridate)

test_int_1 <- interval(ymd_hms('2024-04-29 17:01:00'), ymd_hms('2024-04-29 18:00:00'))
test_int_2 <- interval(ymd_hms('2024-04-29 17:28:00'), ymd_hms('2024-04-29 17:56:00'))

# 拆分出三个区间段
int_before <- interval(start(test_int_1), start(test_int_2))  # test_int_2之前的部分
int_middle <- test_int_2                                     # test_int_2本身
int_after <- interval(end(test_int_2), end(test_int_1))      # test_int_2之后的部分

# 验证三个区间都属于test_int_1的范围
int_before %within% test_int_1  # 返回TRUE
int_after %within% test_int_1   # 返回TRUE

如果需要把前后两个不连续区间合并成一个集合,可以用lubridate的intervals()容器类型存储:

int_rest <- intervals(int_before, int_after)
int_rest

这样就能得到拆分后的所有区间段,同时避开setdiff的限制。

内容的提问来源于stack exchange,提问作者user13317

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:00:01