Michael Chirico
2026-Mar-05 22:26 UTC
[Rd] Is "difftime" an appropriate addition to methods::.OldClassesList?
I found myself needing to add methods::setOldClass("difftime") in
order to also set a coercion method for my class to difftime:
methods::setAs("myClass", "difftime", ...)
And thus avoid the on-load message:
in method for ?coerce? with signature
?"myClass","difftime"?: no
definition for class ?difftime?
I see 10 or so other packages also doing the same [1].
I am wondering, though, since {base} owns this class, if it shouldn't
be registered already? I see inclusions for, e.g., closely-related S3
classes Date and POSIXt [2].
OTOH, I see .OldClassesList hasn't really been edited in 15+ years, so
maybe this approach has lost favor and is better not amended anymore
[3].
(or maybe this is really an r-package-devel question about whether
supporting as(<my class>, "difftime") is actually beneficial...)
Mike C
[1]
https://github.com/search?q=org%3Acran%20%2FsetOldClass.*difftime%2F&type=code
[2]
https://github.com/r-devel/r-svn/blob/b7850c8cae0956592019c5f8f59e885d3d39ae6f/src/library/methods/R/BasicClasses.R#L550-L552
[3]
https://github.com/r-devel/r-svn/blame/b7850c8cae0956592019c5f8f59e885d3d39ae6f/src/library/methods/R/BasicClasses.R#L541-L569
Martin Maechler
2026-Mar-06 10:36 UTC
[Rd] Is "difftime" an appropriate addition to methods::.OldClassesList?
>>>>> Michael Chirico >>>>> on Thu, 5 Mar 2026 14:26:16 -0800 writes:> I found myself needing to add methods::setOldClass("difftime") in > order to also set a coercion method for my class to difftime: > methods::setAs("myClass", "difftime", ...) > And thus avoid the on-load message: > in method for ?coerce? with signature ?"myClass","difftime"?: no > definition for class ?difftime? > I see 10 or so other packages also doing the same [1]. > I am wondering, though, since {base} owns this class, if it shouldn't > be registered already? I see inclusions for, e.g., closely-related S3 > classes Date and POSIXt [2]. In my vague recollection "difftime" came a bit later than "Date" and "POSIXlt". This may be the reason for its non-presence. > OTOH, I see .OldClassesList hasn't really been edited in 15+ years, so > maybe this approach has lost favor and is better not amended anymore > [3]. well, favors related to S4 have always been somewhat segregated .. > (or maybe this is really an r-package-devel question about whether > supporting as(<my class>, "difftime") is actually beneficial...) The use of as(., <...>) is an R-help question really not restricted to package development at all. I agree that "difftime" does naturally belong alongside "POSIXt" and I am happy to add it to the list; (I did check to see if an unneeded setOldClass(<already_set>) gives a warning, and it doesn't) Martin > Mike C > [1] https://github.com/search?q=org%3Acran%20%2FsetOldClass.*difftime%2F&type=code > [2] https://github.com/r-devel/r-svn/blob/b7850c8cae0956592019c5f8f59e885d3d39ae6f/src/library/methods/R/BasicClasses.R#L550-L552 > [3] https://github.com/r-devel/r-svn/blame/b7850c8cae0956592019c5f8f59e885d3d39ae6f/src/library/methods/R/BasicClasses.R#L541-L569