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
ますか?
いくつかのオブジェクトを合計するためだけに、派手なライブラリを提案しないでください。彼らのコードでアイデアを共有する方が良いです。