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. ______________________________________________ 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.