我正在处理古气候数据,需要很长时间的时间序列。为了帮助创建一个xts对象,我使用了方便的timeBasedSeq函数。根据文档,您不需要引用日期范围,因为它将在内部处理。事实证明,对于从公元1000年开始的日期,情况确实如此。但是,对于早于1000 CE的日期,行为非常不一致。例如,以下命令为1550-1560 CE年份提供了正确的月度日期序列:
timeBasedSeq(155001/1560)
timeBasedSeq(1550/156012)
timeBasedSeq(155001/156012)
对于公元1000年以前的日期,结果不一致。命令......
timeBasedSeq(550/56012)
在550-560 CE之间产生正确的月度序列。命令......
timeBasedSeq(0550/0560)
在公元550-560之间生成相同十年的正确年度序列。但命令......
timeBasedSeq(55001/560)
timeBasedSeq(055001/0560)
生成错误:
Error in seq.int(r1$mon, 12 * (to0$year - r1$year) + to0$mon, by) : wrong sign in 'by' argument
更糟糕的是,命令......
timeBasedSeq(55001/56012)
timeBasedSeq(055001/056012)
...不要引发错误,但会产生错误的日期序列:从5500到5601 CE(将来的远期)的世纪年度序列。
引用后面这些有问题的命令会产生正确的结果。例如,......
timeBasedSeq("55001/560")
在550-560之间给出正确的每月序列,而没有引号的相同命令会引发错误。因此,无论文档如何,总是在timeBasedSeq中引用日期范围规范似乎是个好主意。
但是,我找不到任何方法来生成0 CE之前的日期序列 - 即日期BC或BCE。即使引用日期范围,timeBasedSeq似乎也会忽略负号。有没有人建议生成从公元前2000年到公元500年每月运行的序列?