[Rd] Dangerous Bug with IF function of R

Brian Diggs diggsb at ohsu.edu
Mon Apr 18 18:36:38 CEST 2011


On 4/18/2011 9:12 AM, salmajj wrote:
> hi!
> there is a bug with the IF operator that is really dangerous!
> please try the code below and if someone could explain to me why when (q is
> equal to 0.8, 0.9 or 1) R do not print it?
>
> q=0
> for (j in 1:11){
>
> if ((q==1)){
> print(q)
> 	}			
> q=q+0.1
> }
>
> so in this code q is incremented from 0 to 1.1. but R do not capture print
> the value 1, 0.8 and 0.9 !! try to change (q==0.4) it gonna print 0.4. but
> if you put q==0.8 or 0.9 or 1 it doesn't work!!!
> please try it it is amazing!!!

It is not a bug.  It a misunderstanding on your part of the limits of 
floating point arithmetic.  See FAQ 7.31 (and multiple previous 
discussions on this and the r-help list).

http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f

> --
> View this message in context: http://r.789695.n4.nabble.com/Dangerous-Bug-with-IF-function-of-R-tp3457976p3457976.html
> Sent from the R devel mailing list archive at Nabble.com.
>


-- 
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University



More information about the R-devel mailing list