从R中的当前日期返回几个月的日期

从R中的当前日期返回几个月的日期,r,R,请不要关闭此问题,因为它不是 我正在尝试将类型为IDate的日期转换为mondate,然后再转换回IDate 在下面的代码中,我试图获取给定日期前6个月的日期date1,这是IDate对象 library(mondate) date1 = as.IDate("2020-02-10") date2 = as.IDate(mondate(date1)-6) 然而,我得到了警告 Warning message: Attempting to convert class 'IDate

请不要关闭此问题,因为它不是 我正在尝试将类型为
IDate
的日期转换为
mondate
,然后再转换回
IDate

在下面的代码中,我试图获取给定日期前6个月的日期
date1
,这是IDate对象

library(mondate)
date1 = as.IDate("2020-02-10")
date2 = as.IDate(mondate(date1)-6)
然而,我得到了警告

Warning message:
Attempting to convert class 'IDateDate' to 'mondate' via 'as.Date' then 'as.numeric'. Check results! 
有人能告诉我如何纠正这个警告吗

解决方案-
正如Ronak在评论中所建议的-
date1%m-%months(6)
适用于IDate类。

IDate
不是一种非常常见的日期类,因此
mondate
返回一个警告,以检查结果并确保其正确性,因为它已在内部将
IDate
转换为日期类

library(mondate)
mondate(date1) - 6

#mondate: timeunits="months"
#[1] 08/11/2019
library(lubridate)

date1 %m-% months(6)
#[1] "2019-08-10"
as.Date(date1) %m-% months(6)
#[1] "2019-08-10"
警告信息: 正在尝试通过“as.Date”和“as.numeric”将类“IDateDate”转换为“mondate”。检查结果

这是一个友好的警告,可以忽略。如果不希望警告显式转换为日期类

mondate(as.Date(date1)) - 6
#mondate: timeunits="months"
#[1] 08/11/2019

使用
lubridate
%m-%
可以很好地处理
IDate
以及日期类

library(mondate)
mondate(date1) - 6

#mondate: timeunits="months"
#[1] 08/11/2019
library(lubridate)

date1 %m-% months(6)
#[1] "2019-08-10"
as.Date(date1) %m-% months(6)
#[1] "2019-08-10"

使用
lubridate
可以执行
date1%m-%months(6)
。在链接帖子中还有一个带有
mondate
的选项。我正在使用
mondate
库获取6个月前的日期,并在将其转换为
IDate
时收到警告。我在这个问题的链接帖子中找不到任何帮助。
date1%m-%months(6)
做得不错。谢谢