Hi all, I'm trying to make an integer-backed quarter (as in fraction of year) class, but I can't quite it to work. I want integer-backed so I don't have to worry about floating-point effects when doing math, and so that I can use it as in data.table.
First of all, is there a good reference for this anywhere? All of the S4 tutorials that I've found have been too high-level, and I can't find any examples of implementing extract. In S3, I can use [.Date as my example, but I can't find the equivalent for S4. Second, is this misguided? Now for the details. Given this start: library(zoo) # borrowing yearqtr for output. setClass("iqtr", contains="integer") ## Create an iqtr object from a numeric date (e.g. 2000.5). iqtr <- function (x) { iq <- as.integer(floor((as.numeric(x) - 2000) * 4 + 0.0001)) new("iqtr", iq) } setMethod("show", "iqtr4", function (object) { cat(format(yearqtr(as.numeric(x) * 0.25 + 2000))) }) I have two issues: 1. Vectors of iqtrs do not display properly. They print, but they don't look like vectors. > iq <- iqtr(seq(2000, 2002, 0.25)) > iq 2000 Q2 2000 Q2 2000 Q3 2000 Q4 2001 Q2 2002 Q1> 2. Subsets do not stay in the class. > iq[1:2] > [1] 0 1 Clearly, I'm just not understanding what's going on. Is there a guide for how to make printing, format, subsetting, etc., all work for S4 classes? Thanks, Johann ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel