[R] seq(0.05,0.95,by=0.002) and logical error
Ray Brownrigg
Ray.Brownrigg at mcs.vuw.ac.nz
Sun Dec 10 21:30:54 CET 2000
| That's a computational problem:
|
| jj <- seq(0.05, 0.95, by=0.002)
| options("digits" = 22)
| jj[351] # result: [1] 0.75000000000000011
|
| So sum(jj==0.75) gives the *correct* answer.
|
Also note that:
> jj <- seq(50, 950, by=2)/1000
> sum(jj==0.75)
[1] 1
>
will (should!) always give the answer you require.
The problem is that .002 is not *exactly* .002, and (more generally),
decimal floating point numbers cannot in general be represented exactly
in binary.
> > sum(jj==0.562)
> [1] 1
> > sum(jj==0.564) ## 0.564 seems to be the cutoff point
> [1] 0
This is not quite the true situation. The 'correct' values are scatterd
throughout the vector jj:
> kk <- seq(50, 950, by=2)/1000 # generate 'correct' values
> ll <- as.numeric(jj==kk)
> ll
[1] 1 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0
[38] 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1
[75] 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[112] 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1
[149] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1
[186] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
[223] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0
[260] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
[297] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[334] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[371] 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[408] 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[445] 0 0 0 0 0 0 0
> sum(ll)
[1] 296
>
So more than 60% of them are 'correct'.
Hope this helps,
Ray Brownrigg
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list