我使用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