[Rd] undesirable rounding off due to 'read.table' (PR#8974)
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Jun 13 16:38:32 CEST 2006
overeem at knmi.nl wrote:
> Full_Name: Aart Overeem
> Version: 2.2.0
> OS: Linux
> Submission from: (NULL) (145.23.254.155)
>
>
> Construct a dataframe consisting of several variables by using 'data.frame' and
> 'cbind' and write it to a file with 'write.table'. The file consists of headers
> and values, such as 12.4283675334551 (so 13 numbers behind the decimal point).
> If this dataframe is read with 'read.table(filename, skip = 1)' or
> 'read.table(filename, header = TRUE') the values only have 7 numbers behind the
> decimal point, e.g. 12.42837. So, the reading rounds off the values. This is not
> mentioned in the manual. Although the values still have many numbers behind the
> decimal point, rounding off is, in my view, never desirable.
I don't see this. Try the following script:
> x <- data.frame(a=12.4283675334551)
> x
a
1 12.42837
> write.table(x,'test')
> y <- read.table('test')
> y
a
1 12.42837
> y$a-x$a
[1] 0
If y$a had been rounded to 5 decimal places, then we would see a nonzero
difference at the end. I think you are being confused by the display,
which only shows 5 decimal places, even though more are
maintained internally. For example,
> options(digits=20)
> y
a
1 12.4283675334551
Please be careful about what you submit as a bug report.
Duncan Murdoch
More information about the R-devel
mailing list