On 9/30/2009 2:40 PM, Michael Knudsen wrote:
Hi,

Today I was flabbergasted to see something that looks like a rounding
error in the very basic seq function in R.

a = seq(0.1,0.9,by=0.1)
a
[1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
a[1] == 0.1
[1] TRUE
a[2] == 0.2
[1] TRUE
a[3] == 0.3
[1] FALSE

It turns out that the alternative

a = (1:9)/10

works just fine. Are there any good guides out there on how to deal
with issues like this? I am normally aware of rounding errors, but it
really surprised me to see that an elementary function like seq would
behave in this way.

Why? You asked for an increment of 1 in the second case (which is exactly represented in R), then divided by 10, so you'll get the same as 0.3 gives you. In the seq() case you asked for an increment of a number close to but not equal to 1/10 (because 1/10 is not exactly representable in R), so you got something different.

Duncan Murdoch

______________________________________________
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