我用lubridate和揣摩,这将是如此容易生成每月的最后一天的序列两年
ymd("2010-01-31")+months(0:23)
但看看一个得到什么。这一切都搞砸了!
[1] "2010-01-31 UTC" "2010-03-03 UTC" "2010-03-31 UTC" "2010-05-01 UTC" "2010-05-31 UTC" "2010-07-01 UTC" "2010-07-31 UTC" "2010-08-31 UTC" "2010-10-01 UTC"
[10] "2010-10-31 UTC" "2010-12-01 UTC" "2010-12-31 UTC" "2011-01-31 UTC" "2011-03-03 UTC" "2011-03-31 UTC" "2011-05-01 UTC" "2011-05-31 UTC" "2011-07-01 UTC"
[19] "2011-07-31 UTC" "2011-08-31 UTC" "2011-10-01 UTC" "2011-10-31 UTC" "2011-12-01 UTC" "2011-12-31 UTC"
然后,我读了如何lubridate迎合现象,如间隔,持续时间和周期。所以,我知道一个月实际上是由(365 * 4 + 1)/ 48 = 30.438天定义的天数。所以我试图变得聪明,并重写它为
ymd("2010-01-31")+ as.period(months(0:23))
但是,只是给了一个错误。
Error in as.period.default(months(0:23)) : (list) object cannot be coerced to type 'double'
使用'strftime(date)'来摆脱时区。所以'strftime('2010-10-31 UTC')'会给你'2010-10-31'。 – Ramnath
你能接受你的答案以及下一个可怜的灵魂吗? –
@SachaEpskamp:Stackoverflow将只允许我在两天后接受我的答案。我想这很聪明。可能有更优雅的另一个解决方法。 – Farrel