[R] which() function not finding certain numbers
Petr Savicky
savicky at cs.cas.cz
Wed Aug 15 19:45:10 CEST 2012
On Wed, Aug 15, 2012 at 10:37:17PM +1000, Tom Bird wrote:
> Hi,
>
> I am using 32-bit R v 2.15.1, on Mac OsX v 10.6.8 with R GUI 1.52 Leopard
> build 32-bit (6188). I have also replicated this error on R 2.13.2 on a
> windows 7 machine.
>
> In some sequences of numbers, I am unable to use the which() function to
> index certain values. It seems to be primarily numbers with a 3 in the
> decimal.
> For example:
>
> > S=seq(0,4,0.01)
>
> > which(S==2.02)
>
> [1] 203
>
> > which(S==2.03)
>
> integer(0)
>
> > which(S==2.04)
>
> [1] 205
>
> > which(S==2.04)
>
> [1] 205
>
> > which(S==3.03)
>
> integer(0)
>
> > which(S==3.3)
>
> integer(0)
>
> > which(S==3.)
>
> [1] 301
>
> > which(S==3.5)
>
> [1] 351
Hi.
This is a rounding problem.
print(S[204], digits=20)
[1] 2.0300000000000002487
print(2.03, digits=20)
[1] 2.0299999999999998046
Use function round(, digits), for example
S <- round(seq(0,4,0.01), digits=7)
which(S==2.03)
[1] 204
which(S==3.03)
[1] 304
Hope this helps.
Petr Savicky.
More information about the R-help
mailing list