On 3/16/2009 9:36 AM, Daniel Murphy wrote:
Hello:I am trying to match the value 0.3 in the sequence seq(.2,.3). I get
0.3 %in% seq(from=.2,to=.3)
[1] FALSE
Yet
0.3 %in% c(.2,.3)
[1] TRUE
For arbitrary sequences, this "invisible .3" has been problematic. What is
the best way to work around this?

Don't assume that computations on floating point values are exact. Generally computations on small integers *are* exact, so you could change that to

3 %in% seq(from=2, to=3)

and get the expected result. You can divide by 10 just before you use the number, or if you're starting with one decimal place, multiply by 10 *and round to an integer* before doing the test. Alternatively, use some approximate test rather than an exact one, e.g. all.equal() (but you'll need a bit of work to make use of all.equal() in an expression like 0.3 %in% c(.2,.3)).

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to