[Rd] print.default and attributes

Mark.Bravington@csiro.au Mark.Bravington@csiro.au
Thu Jan 30 23:50:02 2003


#-----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