print.default and attributes
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