[R] number of decimal

Marc Schwartz marc_schwartz at me.com
Thu Jan 28 16:55:52 CET 2010


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.

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



More information about the R-help mailing list