The "less than" (<) operator doesnt seem to perform as expected
On Thu, Feb 02, 2012 at 10:00:58AM +0000, Jonas Hal wrote:
The example here puzzles me. It seems like the < operator doesn't work as expected.
l <- 0.6 u <- seq(0.4, 0.7, 0.1) u
[1] 0.4 0.5 0.6 0.7
mygrid <- expand.grid("l" = l, "u" = u)
mygrid
l u 1 0.6 0.4 2 0.6 0.5 3 0.6 0.6 4 0.6 0.7
mygridcollapsed <- mygrid[mygrid$l < mygrid$u, ] mygridcollapsed
l u 3 0.6 0.6 4 0.6 0.7 In this little example I expect 'mygridcollapsed' only to return row 4 and for it to return row 3 seems wrong. The strange thing is it seems to work if I start the u-sequence at 0.5.
Hi. As others pointed out, the problem is in different rounding error of 0.6 and seq(0.4, 0.7, 0.1)[3]. Try print(0.6, digits=20) [1] 0.5999999999999999778 print(seq(0.4, 0.7, 0.1)[3], digits=20) [1] 0.60000000000000008882 Use round(, digits=1) to force the same rounding in seq(0.4, 0.7, 0.1) and in c(0.4, 0.5, 0.6, 0.7) round(seq(0.4, 0.7, 0.1), digits=1) == c(0.4, 0.5, 0.6, 0.7) Hope this helps. Petr Savicky.