Re: [Rd] Extract/format/show for S4 objects

From: Gabor Grothendieck <ggrothendieck_at_gmail.com>
Date: Tue, 08 Jun 2010 10:30:47 -0400

The yearqtr class already rounds off automatically to avoid floating point effects and handles #1 and #2.

On the other hand if you are just interested in playing around with S4 for its own sake review the source code of the mondate package as an example of an S4 based date package.

On Tue, Jun 8, 2010 at 10:08 AM, Johann Hibschman <jhibschman_at_gmail.com> wrote:
> 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_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 08 Jun 2010 - 14:33:55 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 09 Jun 2010 - 16:11:01 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive