On 14-03-14 11:03 PM, Mike Miller wrote:
On Fri, 14 Mar 2014, Duncan Murdoch wrote:

On 14-03-14 8:59 PM, Mike Miller wrote:
What I'm using:

R version 3.0.1 (2013-05-16) -- "Good Sport"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)

That's not current, but it's not very old...

According to some docs, options(digits) controls numerical precision in
output of write.table().  I'm using the default value for digits:

getOption("digits")
[1] 7

I have a bunch of numbers in a data frame that are only a few digits to
the right of the decimal:

That's not enough to reproduce this.  Put together a self-contained
reproducible example if you're wondering why something behaves as it
does. With just a bunch of output, you'll just get uninformed guesses.


Thanks for the tip.  Here's what I've done:

data2 <- data[c(94,120),c(18,20,21)]

Thanks, I got the data2.Rdata file. Peter was right, you don't have what you think you have in that dataframe. See below.

save(data2, file="data2.Rdata")
q("no")

$ R
load("data2.Rdata")
data2
        V18   V20      V21
94  0.008 0.008 0.000064
120 0.023 0.023 0.000529

I'll create a dataframe that looks like yours:

> data3 <- data.frame(V18=c(0.008, 0.023), V20=c(0.008, 0.023), V21=c(0.000064, 0.000529))
> data3
    V18   V20      V21
1 0.008 0.008 0.000064
2 0.023 0.023 0.000529


But it's not the same:

> data2-data3
              V18           V20           V21
94   6.938894e-18  6.938894e-18  1.219727e-19
120 -9.020562e-17 -9.020562e-17 -4.119968e-18

I can't tell where these errors crept in; they are likely there in your "data" object, which you didn't give us. I'd guess as Peter did that your numbers are the results of computations that introduced rounding error.

Duncan Murdoch

write.table(data2, file="data2.txt", sep="\t", row.names=F, col.names=F)

$ cat data2.txt
0.00800000000000001     0.00800000000000001     6.40000000000001e-05
0.0229999999999999      0.0229999999999999      0.000528999999999996

The data2.Rdata file is attached to this message.

I guess that is enough to reproduce this exact finding.  I don't know how
it works in general.

I don't have a newer version of R available right now.  It did the same
thing on an older version (2.15.1).

Interestingly, on a different machine with an even older version (2.12.2)
I see something a little different:

0.008   0.008   6.40000000000001e-05
0.0229999999999999      0.0229999999999999      0.000528999999999996

Best,
Mike


______________________________________________
R-help@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.

Reply via email to