我想为 Date
该类定义一个加法操作,以添加月份,而不是那几天。
这有效:
`+.Date`<- function(date,n) seq(date, by = paste (n, "months"), length = 2)[2]
不幸的是,它会破坏(屏蔽)基于天数的原始添加操作。
这也有效:
`%+%`<- function(date,n) seq(date, by = paste (n, "months"), length = 2)[2]
但它不是特定于 Date
班级的。
可以定义一个优雅的退出。
`%+%`<- function(date,n) {
if (class(date)=="Date") return (seq(date, by = paste (n, "months"), length = 2)[2])
else stop("%+% only valid for Date + numeric")
}
无论如何,理想的情况是为%+%
定义的操作Date
,例如+.Date
:
rm("%+%")
`%+%.Date`<- function(date,n) seq(date, by = paste (n, "months"), length = 2)[2]
但:
as.Date("2010/1/1") %+% 2
Error: could not find function "%+%"
你能修%+%.Date
好吗?我们必须重新定义类Date
吗?
请不要为了总结几个对象而建议一些花哨的库。最好在他们的代码中分享这些想法。