Re: [Rd] Dangerous Bug with IF function of R

From: Brian Diggs <diggsb_at_ohsu.edu>
Date: Mon, 18 Apr 2011 09:36:38 -0700

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

______________________________________________
R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Mon 18 Apr 2011 - 16:40:53 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 18 Apr 2011 - 17:30:50 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive