[Rd] print.default and attributes
ripley@stats.ox.ac.uk
ripley@stats.ox.ac.uk
Fri Jan 31 00:02:05 2003
As far as I can tell S2000 is a Honda sports car. This is *R*-devel,
and in R typing x does not call print.default, let alone print.matrix.
Can you please check your facts a little?
The models that R considers are S-PLUS 3.4, and these days more often 6.1
as R adopts ideas from S4. S-PLUS 2000 (I guess you meant) is not very
like either of those.
On Fri, 31 Jan 2003 Mark.Bravington@csiro.au wrote:
> #-----Original Message-----
> #From: ripley@stats.ox.ac.uk [mailto:ripley@stats.ox.ac.uk]
> #Sent: Thursday, 30 January 2003 6:42 PM
> #To: Mark.Bravington@csiro.au
> #Cc: r-devel@stat.math.ethz.ch
> #Subject: Re: [Rd] print.default and attributes
> #
> #
> #On Thu, 30 Jan 2003 Mark.Bravington@csiro.au wrote:
> #
> #> When something gets printed by the "print.default" function,
> #any extra
> #> attributes are printed without regard to their class
> #attribute (if any).
>
> << snipped >>
>
> #
> #> BTW, the same applies to "print.matrix" (which doesn't rely
> #on "print"), and
> #> perhaps to other print methods. Of course, it will also apply to any
> #> class-specific print method which invokes "print" or
> #"NextMethod", too.
> #
> #In R-devel print.matrix *does* rely on print, and *is* a print method.
> #But the old-style prmatrix aka print.matrix does not print attributes
> #normally:
> #
> #> x <- matrix(1:4, 2, 2)
> #> attr( x, 'other') <- factor( c( 'cat', 'dog'))
> #> prmatrix(x)
> # [,1] [,2]
> #[1,] 1 3
> #[2,] 2 4
> #
> #So how did you make it print attributes?
>
> Ummm... good point; I guess I didn't, despite thinking I had. All I did was
> type "x" instead of "prmatrix( x)" in what you've given above; in that case,
> the attributes are printed (albeit without regard to class).
>
> My assumption was that, if "x" was a matrix (i.e. had a "dim" attribute),
> then "x" would be printed using "print.matrix" rather than "print.default".
> Evidently, more is going on. The R1.6.2 code for "print.default" and
> "print.matrix" is mostly .Internal, so I can't tell what's happening. But in
> S2000, FWIW, what happens is that "print.default" spots the presence of
> attributes and therefore calls "print.structure", which (i) spots the "dim"
> and therefore calls "print.matrix" (no attributes displayed) and then (ii)
> explicitly prints any extra attributes (by calling "print", so that
> attribute classes are respected).
>
> cheers
> Mark
>
> #
> #--
> #Brian D. Ripley, ripley@stats.ox.ac.uk
> #Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> #University of Oxford, Tel: +44 1865 272861 (self)
> #1 South Parks Road, +44 1865 272866 (PA)
> #Oxford OX1 3TG, UK Fax: +44 1865 272595
> #
>
>
>
> *******************************
>
> Mark Bravington
> CSIRO (CMIS)
> PO Box 1538
> Castray Esplanade
> Hobart
> TAS 7001
>
> phone (61) 3 6232 5118
> fax (61) 3 6232 5012
> Mark.Bravington@csiro.au
>
--
Brian D. Ripley, ripley@stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595