lubridate中的months()运算符产生NA

时间:2016-05-25 13:37:02

标签: r lubridate

以下R行为让我感到困惑:

true

为什么第一个工作而第二个不工作?

1 个答案:

答案 0 :(得分:1)

这是故意的。

您可以阅读lubridate documentation

具体来说,你可以这样做:

EndDate%m-%months(2)
[1] "2016-02-29"

这将执行减法并自动将日期回滚到第一个真实日期'如果减法导致非实际日期。

请注意,如果您想要前进,那么您必须做更多的工作(据我所知,我希望有一个像%m-f%这样的简单操作符或其他一些操作符推导已存在的%m-%)。但是这样的事情会起作用:

EndDate%m-%months(2) + if(is.na(EndDate-months(2))) {days(1)} else {0}
"2016-03-01"