[R] numeric format

Rolf Turner r.turner at auckland.ac.nz
Tue Feb 26 23:23:32 CET 2008


On 27/02/2008, at 11:01 AM, John Kane wrote:

> Can you give a working example of what is happening
> and explain what is x?
>
> With a simple x vector of x <- rnorm(20, 5, 2)
> I don't get anything like what you seem to be getting.
>
> My code
> ===================================================
> x <- rnorm(20, 5, 2)
> table<-data.frame(x, scientific=F, digits=4)
> table
> ===================================================
>
> The numbers on the left are simply line numbers that
> are automatically printed when you are printing a
> dataframe to the screen.  I don't see any way to
> supress them for a simple command such as your
> table
>
> You might want to have a look at print and
> print.default to address the digits problem

	<snip>

I have often wanted to suppress these row numbers and for that purpose
wrote the following version of print.data.frame() which I keep in a
local package (that I have set up to be loaded automatically on startup)
which masks the system version of print.data.frame():

print.data.frame <- function (x, ..., digits = NULL, quote = FALSE,
     right = TRUE, srn = FALSE)
{
     if (length(x) == 0) {
         cat("NULL data frame with", length(row.names(x)), "rows\n")
     }
     else if (length(row.names(x)) == 0) {
         print.default(names(x), quote = FALSE)
         cat("<0 rows> (or 0-length row.names)\n")
     }
     else {
         if (!is.null(digits)) {
             op <- options(digits = digits)
             on.exit(options(op))
         }
         rowlab <- if (srn)
             rep("", nrow(x))
         else row.names(x)
         prmatrix(format(x), rowlab = rowlab, ..., quote = quote,
             right = right)
     }
     invisible(x)
}

The ``srn'' argument means ``suppress row numbers''; it defaults to  
FALSE so by default
the behaviour of my print.data.frame() is the same as that of the  
system print.data.frame().
To suppress the row numbers you can say, e.g.

	print(junk,srn=TRUE)

Note to Young Players --- you need only type ``print'' in the above,  
r.t. ``print.data.frame'',
since print.data.frame() is a ``method'' for print().

I once suggested to an R Core person that my version of  
print.data.frame() be adopted as the
system version, but was politely declined.

			cheers,

				Rolf Turner


######################################################################
Attention:\ This e-mail message is privileged and confid...{{dropped:9}}



More information about the R-help mailing list