0

Im trying to go tru all the values of a modified column (round((D$eff)*d,1)), the for loop goes between all the posible values the modified column can take, but still considers that two equal values are different. If i ran this code:

suma<-function(c,d){
  D<-subset(sim)
  for (g in 0:c){
      print(g*0.1)
      D<-subset(D,  g*0.1,1!= (round((D$eff)*d,1)))
      print(round((D$eff)*d,1))
  }
  return(round((D$eff)*d,1))
}

it returns:

[1] 2.2
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.3 2.4 2.4 2.5 2.3 2.5 2.5 2.5 2.3 2.5 2.4 2.4 2.5 2.4 2.4 2.5 2.4
 [37] 2.5 2.7 2.6 2.5 2.5 2.4 2.5 2.5 2.5 2.4 2.4 2.5 2.6 2.4 2.4 2.5 2.4 2.5
 [55] 2.9 2.9 3.0 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.4 2.5 2.6 2.5 2.6 2.5 2.5 2.6
 [73] 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5 2.5
 [91] 2.5 2.5 2.6 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5
[109] 2.5 2.5 2.4 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.6 2.5 2.4 2.4
[127] 2.6 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6
[145] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5
[163] 2.6 2.6 2.6 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[1] 2.3
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.3 2.4 2.4 2.5 2.3 2.5 2.5 2.5 2.3 2.5 2.4 2.4 2.5 2.4 2.4 2.5 2.4
 [37] 2.5 2.7 2.6 2.5 2.5 2.4 2.5 2.5 2.5 2.4 2.4 2.5 2.6 2.4 2.4 2.5 2.4 2.5
 [55] 2.9 2.9 3.0 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.4 2.5 2.6 2.5 2.6 2.5 2.5 2.6
 [73] 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5 2.5
 [91] 2.5 2.5 2.6 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5
[109] 2.5 2.5 2.4 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.6 2.5 2.4 2.4
[127] 2.6 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6
[145] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5
[163] 2.6 2.6 2.6 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[1] 2.4
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.3 2.4 2.4 2.5 2.3 2.5 2.5 2.5 2.3 2.5 2.4 2.4 2.5 2.4 2.4 2.5 2.4
 [37] 2.5 2.7 2.6 2.5 2.5 2.4 2.5 2.5 2.5 2.4 2.4 2.5 2.6 2.4 2.4 2.5 2.4 2.5
 [55] 2.9 2.9 3.0 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.4 2.5 2.6 2.5 2.6 2.5 2.5 2.6
 [73] 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5 2.5
 [91] 2.5 2.5 2.6 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5
[109] 2.5 2.5 2.4 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.6 2.5 2.4 2.4
[127] 2.6 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6
[145] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5
[163] 2.6 2.6 2.6 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[1] 2.5
 [1] 2.6 2.6 2.6 2.6 2.7 2.7 2.8 2.9 3.1 2.7 2.6 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3
[20] 2.4 2.4 2.4 2.4 2.4 2.7 2.6 2.4 2.4 2.4 2.6 2.4 2.4 2.4 2.9 2.9 3.0 3.0 2.9
[39] 2.6 2.4 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.4 2.4 2.4 2.6 2.4 2.4 2.6 2.4 2.4
[58] 2.6 2.6 2.4 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6
[1] 2.6
 [1] 2.7 2.7 2.8 2.9 3.1 2.7 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4
[20] 2.7 2.4 2.4 2.4 2.4 2.4 2.4 2.9 2.9 3.0 3.0 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[39] 2.4 2.4
[1] 2.7
 [1] 2.8 2.9 3.1 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[20] 2.4 2.4 2.4 2.9 2.9 3.0 3.0 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[1] 2.8
 [1] 2.8 2.9 3.1 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[20] 2.4 2.4 2.4 2.9 2.9 3.0 3.0 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[1] 2.9
 [1] 2.8 2.9 3.1 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[20] 2.4 2.4 2.4 2.9 2.9 3.0 3.0 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[1] 3
 [1] 2.8 2.9 3.1 3.1 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[20] 2.4 2.4 2.4 2.9 2.9 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[1] 3.1
 [1] 2.8 2.9 2.8 2.8 2.3 2.4 2.4 2.3 2.3 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4
[20] 2.4 2.9 2.9 2.9 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4 2.4

But is I round the left part of the inequality:

suma<-function(c,d){
  D<-subset(sim)
  for (g in 0:c){
      print(g*0.1)
      D<-subset(D,  round(g*0.1,1)!= (round((D$eff)*d,1)))
      print(round((D$eff)*d,1))
  }
  return(round((D$eff)*d,1))
}

it returns:

[1] 2.2
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.3 2.4 2.4 2.5 2.3 2.5 2.5 2.5 2.3 2.5 2.4 2.4 2.5 2.4 2.4 2.5 2.4
 [37] 2.5 2.7 2.6 2.5 2.5 2.4 2.5 2.5 2.5 2.4 2.4 2.5 2.6 2.4 2.4 2.5 2.4 2.5
 [55] 2.9 2.9 3.0 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.4 2.5 2.6 2.5 2.6 2.5 2.5 2.6
 [73] 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5 2.5
 [91] 2.5 2.5 2.6 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5
[109] 2.5 2.5 2.4 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.6 2.5 2.4 2.4
[127] 2.6 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6
[145] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5
[163] 2.6 2.6 2.6 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[1] 2.3
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.4 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.4 2.5 2.4 2.4 2.5 2.4 2.5 2.7 2.6
 [37] 2.5 2.5 2.4 2.5 2.5 2.5 2.4 2.4 2.5 2.6 2.4 2.4 2.5 2.4 2.5 2.9 2.9 3.0
 [55] 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.4 2.5 2.6 2.5 2.6 2.5 2.5 2.6 2.5 2.5 2.6
 [73] 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6
 [91] 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.4
[109] 2.5 2.5 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.4 2.5 2.6 2.5 2.4 2.4 2.6 2.5 2.5
[127] 2.6 2.4 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[145] 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5 2.6 2.6 2.6
[163] 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[1] 2.4
  [1] 2.5 2.6 2.6 2.6 2.6 2.5 2.7 2.5 2.7 2.5 2.8 2.9 3.1 2.7 2.5 2.6 3.1 2.8
 [19] 2.8 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.7 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6
 [37] 2.5 2.5 2.9 2.9 3.0 3.0 2.9 2.5 2.5 2.6 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.5
 [55] 2.6 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.6 2.6 2.5 2.5 2.5
 [73] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.5
 [91] 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.5 2.6 2.5 2.5
[109] 2.5 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.5 2.6 2.5 2.5 2.5 2.6 2.5 2.5 2.5
[127] 2.5 2.5 2.5 2.6 2.5 2.6 2.5 2.6 2.6 2.6 2.5 2.6 2.6 2.6 2.6 2.5 2.5 2.5
[145] 2.5 2.6 2.5 2.5 2.5
[1] 2.5
 [1] 2.6 2.6 2.6 2.6 2.7 2.7 2.8 2.9 3.1 2.7 2.6 3.1 2.8 2.8 2.7 2.6 2.6 2.9 2.9
[20] 3.0 3.0 2.9 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6
[39] 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6 2.6
[1] 2.6
 [1] 2.7 2.7 2.8 2.9 3.1 2.7 3.1 2.8 2.8 2.7 2.9 2.9 3.0 3.0 2.9
[1] 2.7
 [1] 2.8 2.9 3.1 3.1 2.8 2.8 2.9 2.9 3.0 3.0 2.9
[1] 2.8
[1] 2.9 3.1 3.1 2.9 2.9 3.0 3.0 2.9
[1] 2.9
[1] 3.1 3.1 3.0 3.0
[1] 3
[1] 3.1 3.1
[1] 3.1
numeric(0)

Does anyone know why this happens? thank you in advance.

John P. S.
  • 367
  • 3
  • 17
  • It's easier for us to root cause your problem if you make it repeatable. A small sample of data for `c`, `d`, and `sim` would help a lot. We don't need this big of an example. Just something to follow the data all the way through. – Adam Sampson Jan 23 '20 at 16:57
  • If your loop is running oddly then the most relevant variable would be `c`. – Adam Sampson Jan 23 '20 at 17:04
  • 3
    Maybe consider using the `near()` function in the dplyr package. Using floating point numbers with == or != comparisons is tricky. – Dave2e Jan 23 '20 at 17:07
  • @AdamSampson c=40, d=180 and D$eff are values close to 0.013, llike: 0.01306 0.01318 0.01302 0.01367 0.01290 0.01367 0.01367 0.01382 0.01294 0.01382 0.01338 0.01338 – Jorge Fabry Jan 23 '20 at 17:30
  • @Dave2e with near() I have no problem, I'll use this in the future, thank you. – Jorge Fabry Jan 23 '20 at 17:46

0 Answers0