[R] Numbers that look equal, should be equal, but if() doesn'tsee as equal (repost with code included)

Barry Rowlingson B.Rowlingson at lancaster.ac.uk
Wed May 28 18:03:03 CEST 2003


Simon Fear wrote:
> Try the following function (the name is supposed to be a joke, by the
> way),
> which will also do the right thing with NAs and characters. Use it as
> if(equal.enough(x,y)) rather than if(x==y), e.g.
> 
> 
>>equal.enough(0.1+0.2, 0.3)
> 

  Oh, why not just go one step further, and redefine the == operator!

  "==" <- function(x,y){equal.enough(x,y)}

before:
 > (.1+.2)==.3
[1] FALSE

after:
 > (.1+.2)==.3
[1] TRUE

  This requires a slight modification to equal.enough, which I will not 
list here, so that people dont _actually_ do this. It just ensures that 
equal.enough doesn't go all infinitely recursive on us.

  Next time on useless R tips: 1 + 1 = 3

Barry




More information about the R-help mailing list