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

推荐答案

是的,你找到了正确的诀窍:从next month人中的第一个回到一天.

下面是R底的一个内衬:

R> seq(as.Date("2010-02-01"), length=24, by="1 month") - 1
 [1] "2010-01-31" "2010-02-28" "2010-03-31" "2010-04-30" "2010-05-31"
 [6] "2010-06-30" "2010-07-31" "2010-08-31" "2010-09-30" "2010-10-31"
[11] "2010-11-30" "2010-12-31" "2011-01-31" "2011-02-28" "2011-03-31"
[16] "2011-04-30" "2011-05-31" "2011-06-30" "2011-07-31" "2011-08-31"
[21] "2011-09-30" "2011-10-31" "2011-11-30" "2011-12-31"
R> 

因此,不需要lubridate个(虽然这是一个很好的软件包)对于这样的简单任务来说是不需要的.此外,它对现有基函数的重载仍然让我觉得有点危险...

R相关问答推荐

如果R上的不同时期之间的值发生了变化,则创建假人

将收件箱变量传递给ggplot 2函数

我可以截断10字节的扩展数并转换为8字节的double吗?

手工PCA上的载体与输出双图不匹配

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

更改绘图上的x轴断点,而不影响风险?

向gggplot 2中的数据和轴标签添加大写和星号

矩阵%*%矩阵中的错误:需要数字/复杂矩阵/向量参数

在数学中正确显示摄氏度、开氏度或华氏度

然后根据不同的列值有条件地执行函数

提取具有连续零值的行,如果它们前面有R中的有效值

使用外部文件分配变量名及其值

在数组索引上复制矩阵时出错

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

我如何go 掉盒子图底部的数字?

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

如何为混合模型输出绘制不同的线型?

按组使用dummy r获取高于标准的行的平均值

如何获取R chromote中的当前URL?

Broom.Mixed::Augment不适用于Sample::分析