On Jan 28, 2010, at 10:55 AM, Marc Schwartz wrote:
Ivan,
The default behavior for print()ing objects to the console in an R
session is via the use of the print.* methods. For real numerics,
print.default() is used and the format is based upon the number of
significant digits, not the number of decimal places. There is also
an interaction with par("scipen"), which influences when scientific
notation is used. See ?print.default for more information on
defaults and behavior, taking note of the 'digits' argument, which
is influenced by options("digits").
Importantly, you need to differentiate between how R stores numeric
real values and how it displays or prints them. Internally, R stores
real numbers using a double precision data type by default.
The internal storage is not truncated by default and is stored to
full precision for doubles, within binary representation limits. You
can of course modify the values using functions such as round() or
truncate(), etc. See ?round for more information.
For display, Peter has already pointed you to sprintf() and related
functions, which allow you to format output for "pretty printing" to
things like column aligned tables and such. Those do not however,
affect the default output to the R console.
If one alters print.default, one can get different behavior, for
instance:
print.default <- function (x, digits = NULL, quote = TRUE, na.print =
NULL, print.gap = NULL,
right = FALSE, max = NULL, useSource = TRUE, ...)
{if (is.numeric(x)) {x <- as.numeric(sprintf("%7.3f", x))}
noOpt <- missing(digits) && missing(quote) && missing(na.print) &&
missing(print.gap) && missing(right) && missing(max) &&
missing(useSource) && length(list(...)) == 0L
.Internal(print.default(x, digits, quote, na.print, print.gap,
right, max, useSource, noOpt))
}
This will have the requested effect for numeric vectors, but does not
seem to be altering the behavior of print.data.frame().
> print(ac2)
score pt times trt
1 28.825139 1 0 1
2 97.458521 1 3 1
3 26.217289 1 6 1
4 80.636507 2 0 1
5 99.729364 2 3 1
6 85.812312 2 6 1
7 2.515870 3 0 1
8 3.893545 3 3 1
9 55.666848 3 6 1
10 21.966027 4 0 1
> print(ac2$score)
[1] 28.825 97.459 26.217 80.637 99.729 85.812 2.516 3.894 55.667
21.966
HTH,
Marc Schwartz
On Jan 28, 2010, at 9:21 AM, Ivan Calandra wrote:
It looks to me that it does more or less the same as format().
Maybe I didn't explain myself correctly then. I would like to set
the number of decimal by default, for the whole R session, like I
do with options(digits=6). Except that digits sets up the number of
digits (including what is before the "."). I'm looking for some
option that will let me set the number of digits AFTER the "."
Example: I have 102.33556677 and 2.999555666
If I set the number of decimal to 6, I should get: 102.335567 and
2.999556.
And that for all numbers that will be in/output from R (read.table,
write.table, statistic tests, etc)
Or is it that I didn't understand everything about formatC() and
sprintf()?
Thanks again
Ivan
Le 1/28/2010 15:12, Peter Ehlers a écrit :
?formatC
?sprintf
Ivan Calandra wrote:
Hi everybody,
I'm trying to set the number of decimals (i.e. the number of
digits after the "."). I looked into options but I can only set
the total number of digits, with options(digits=6). But since I
have different variables with different order of magnitude, I
would like that they're all displayed with the same number of
decimals.
I searched for it and found the format() function, with nsmall=6,
but it is for a given vector. I would like to set it for the
whole session, as with options.
Can anyone help me?
Thanks in advance
Ivan
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.