[R] number of decimal
David Winsemius
dwinsemius at comcast.net
Thu Jan 28 17:04:25 CET 2010
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
>
> ______________________________________________
> R-help at r-project.org 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
More information about the R-help
mailing list