mercredi 17 février 2021

R: Error in If, missing value where TRUE/FALSE needed. Only get it in the non reproducible code

I have made the following reproducible code which checks if a condition is true and then adds a value to a vector:

    days= runif(2000,min=1,max=1173)
    mbuckets = as.data.frame(c(1,2,3,4,5,6,7,8,15,22,29,59,89,119,137,168,209,229,259,
                 299,321,351,389,412,443,479,502,533,569,594,624,659,686,
                 716,749,777,808,839,867,898,929,959,1019,1020,1051,1081,
                 1112,1142,1173))
    bucket = rep(0, length(days))
    cvar = 0
    for (i in days) {
      cvar = cvar+1
      for (j in 1:length(mbuckets[,1])) {
        if(i<=mbuckets[j+1,1] & i>mbuckets[j,1]) {
          bucket[cvar] = mbuckets[j+1,1]
        }
        print(i<=mbuckets[j+1,1] & i>mbuckets[j,1])
        print(i)
        print(j)
      }
    }
    class(day)

In this case, I obtain what I was looking for, which is a bucket vector, with length equal to days:

    > bucket
   [1] 1081  808  259  624  209  898  389  659 1112 1112  321  569  569 1112  898  479  168
  [18]  479  808  808  959  299  929 1081  659  749  389  299  808  898  119 1051  839  502
  [35]  898  867 1142  808  749  569  412 1173 1019  229  898  749 1173  209  119  259 1081
  [52]  533  119  594  259   89  209  716  929  299  808 1081 1173  299  594  299  959 1173
  [69]  351  777  569 1051  299  351   89  569 1081  533  533 1142  137 1173 1019  321  594
  [86]  389  119  749  749  259  898  867 1020  867 1142 1019  867 1019 1019  259  777 1019
 [103]  624  959  119 1051 1019 1112 1142 1142  229  229  839  808   59  898  624   59  209
 [120]  929  839   89  533  502  749  209  898 1019  299  168 1081  119  443 1142  479  624
 [137]  119 1173 1173  137  479  259  839  299  479 1019  867  299  777   89  533  898  209
 [154]  777   59 1051  479  412  659 1019  209  749 1019  321   59  443  299  502 1142 1112
 [171]  777 1019 1112  119  137  686 1019  929  412  839  594  959  229  716  749  209  959
 [188] 1019  299  569  259  168 1081  412  168  898  502  959  137  749  898  716 1019  686
 [205]  959  321  351   59  686  867    6  624  259  686  594 1081  389  259  594  624  479
 [222]  412 1019  749  533  119  777  479  168   59  929   89  808 1019  479  389   59  209
 [239]  749  479  479  959  594 1081  867  569  412  749  929  351  412  839  351  749  777
 [256]  749 1019 1142  443  659  259  686 1019   89  659  808  533  299  299  533 1019 1142
 [273] 1019  259  229  839  716 1173  749 1142   89  299   22  659  659  749  929  569 1019
 [290]  959  168  299  259  898  867  533 1081  777  659  479  299  867 1051  351  299  168
 [307]  659   59  209  351 1112  443  839  749  959  321  351  659  502  749  209  389 1142
 [324]  624  659  749  716 1081  168 1112   22   89   89  929  351 1081 1081  168  299   59
 [341]  594  569  389  259  412  168   59  209  502  209  259  839 1142 1019  929  569  351
 [358]  898  351 1019  716 1142  624 1019  624  594  168  749  259  569 1019  624  594 1142
 [375]  137   59  533  533  351  898  209  119  749  659  898  569  351  229  209  479  479
 [392]  168   89  569  839  299   29  839 1112  959  533  389  479  624  321 1112  959 1142
 [409]  412 1051  749  959  389  443   59  119 1142  443  777  321  569 1173  443  351  686
 [426] 1051  808   29  716  443   89  209 1019 1173  412  209  119 1173  299  929  659  594
 [443]  209  898  777  259  594  749  479  569 1112  502 1081  443 1173  168 1081  929 1019
 [460]  659  808  209  533  624 1142  749  533  479  412  959 1142  624  168  839  229 1019
 [477]  624  898  659  443  533  777 1081  389  839 1081 1173  624  119  569  168  119 1081
 [494]  839  502   89  749  594  168  716  168  533  777 1081 1051   89  659  412  412  959
 [511]  867 1051  808  808  119  321  839  209  299  259  389 1020  389  569  686  959  321
 [528]   89  229  229  659  808  749  569  929  351  168  808  502  659  119 1173 1173  959
 [545]  867   15   15  389   59  839  929  929  259   89  569 1112   59  929 1019  168  479
 [562]  959 1112  867 1173  749   15 1142  209  929   15  299  808  443  351  959 1112  659
 [579]  929  777  898  389  321  168  808  686  351  209  137  321  168   59  898  533  321
 [596]  168  716  443  502   15  808  959  808  929 1019  749  533   59  569 1019  959  119
 [613]  259  898  777  209   89  119 1142  479  259 1019  168   59  659  533  443  351  929
 [630]  808  659  777  839  867  777 1142  839  443  749  479  716  299 1142  119   15  321
 [647]  777  168  808  533   59 1051  624  443 1051 1019    8  808  321  299  929  299  659
 [664]  209  959  119  659  959  443  321  168 1081  443 1051 1019  898 1112  594  624  659
 [681]  686  259  412 1051  209  533  929 1173  479  898 1173  321 1142 1019  777  716  259
 [698]  351  808  137  569  686  839  716  624  209  351  898  929  137  716  119  808  624
 [715]  209   89 1112   89  321  443  594 1081   59  389 1019  749  119 1173  716  119   89
 [732] 1019  209  749  209   59  502  777  929 1051  119  259   59   59  299  137  929  867
 [749]  839  351  533  686  209  168  299 1019 1112  299  716   59 1081  749 1081  716  533
 [766]  479  443  321  412  479  749 1112  479   89  351 1081  716 1081  259   59 1051  624
 [783]  299    4  569  624  533  321  168 1019  686  351  749  867  749   89  168  168 1019
 [800] 1019  808 1019 1019  443  839 1019  659  299   89  137  259 1019  594  259  209  624
 [817]  168  299  929  569 1142  321  898 1019  168  867  686  624  594  209  119  569  659
 [834]  229  929   59 1173  412  959  479 1081  351 1081  839 1019  351  389 1019  119  502
 [851]  749  777 1112  594   89  898  594  659  533  533  959  777 1019  168  412   59  624
 [868]  839  808  624  716  569  168  229  299   59  839 1081 1173 1081  259 1173  321 1019
 [885]  389  299  569  569  659 1173  412  686  959  867  749  959  321  898  716  137  659
 [902] 1173 1051  389  839 1112 1019  299  209  389  412 1081  209  839  168  808 1112  624
 [919]  959  389  716  716  624  168  502  137  168  351 1081  594  259  479   89  777  777
 [936]  959  412   89  443   59 1112    7  594 1019 1173  777   29  443  209  929  569 1051
 [953]  867  168  168  299  502  321  389  929  808   89   59  479  624  959  749  659  412
 [970] 1142  686  716   89  659  443  168  929  443   29 1051  624  502  569  533 1142 1051
 [987] 1051  959   15  119  209  929  502  867  533 1173  749  867 1051   89
 [ reached getOption("max.print") -- omitted 1000 entries ]

The problem comes when instead of using random numbers to set the variable days, I use my original data with 26835 entries:

> head(days)
[1] 319 319 319 319 319 319
> tail(days)
[1] 227 319 227  13  13 308
> length(days)
[1] 26835
> class(days)
[1] "numeric"
> days
   [1] 319 319 319 319 319 319 684 319 319 684 319 319 319 319 319 319 319 319 319 319 319 319
  [23] 319 319 319 319 319 684 319 319 319 319 319 684 684 319 319 319 319 319 319 319 319 319
  [45] 319 319 319 319 319 319 319 319  44 319 319 319 319 319 319 319 319 319 319 319 319 319
  [67] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
  [89] 319 319 319 319  44 319 319 319 684 319 319 319 319 319 319 319 319 319 319 319 319 319
 [111]  44 135 227 319 319 319  44 135 319 227 319 684 684 319 319  44 135 227 319  44 135 319
 [133]  44 319 319 135  44 135 227 319 319 319  13  44 135 319 319 227 319  44 319 319 684  13
 [155] 319 319  44 684 319 319 684 684 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [177] 319 319 319 319 319 319 319 319 319 319 319 319 319  44  44 319 319 319 319 319 319 319
 [199] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [221] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319  13  13  44  44  74
 [243]  74 105 105 135 135 166 166 197 197 227 227 258 258 288 288 319 319 319 319 319 319 319
 [265] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [287] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [309] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319  44  44 319 319
 [331] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319  13  13  44
 [353]  44 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319  44 319 319 319
 [375] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [397] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [419] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [441] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [463] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319  44 319 319 319 319 319
 [485] 319 319 319 319 319  13  13  44  44  13  13  44  44 319  44 135  44 135 319 319 319 319
 [507] 319 319 319 319 319 319  44  44 135 135 319 319 319 319 319 319 319 319 319 319 319  44
 [529] 135  44 135 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [551] 319 319 319 319 319 319 319  44  44 135 135 227 227 319 319 319 319 319 319 319 319 319
 [573] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [595] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [617] 319 319 319 319 319 319 319 319 319 319 319 319 319  44 135 319 319  44 135 319 319 319
 [639] 319 319  44  44 135 135 319 319 227 227 319 319 319 319  44  44 319 319 135 135 227 227
 [661] 319 319 319 319 684 684 319 684 319 319 319 319 319 319 319  44 135  44 135 319 319 319
 [683] 319  44 319 684  44 135 135  44  44 135 135 319 319 319 319 319 319  44 135  44 319 319
 [705] 319 319 319 319  44  44 135 684 684 135 227 227 319 319  44  44 319 135 135 319 319 227
 [727] 227 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [749] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [771] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [793] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [815] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [837] 135 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [859] 319 319 319 319 319 319  13  13  44  44  74  74 105 105 135 135 166 166 197 197 227 227
 [881] 258 258 288 288 319 319  44 135 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [903] 319 319 319 319 319  44  44 135 135 227 227 319 319 319 319 319 319 319 319 319 319 319
 [925] 319 319 319 319 319 319 319 319 319 319 319 319 319  44 135 227 319 319 319 319 319 319
 [947] 319 319 319 319 319 319 319 684 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [969] 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319 319
 [991] 319 319 319 319 319 319 319 319 319 319
 [ reached getOption("max.print") -- omitted 25835 entries ]

The variable days is defined from a personal CSV in the following code:

    library(lubridate)

positions = read.csv("Positions_ABO&AVB_20210215_R_file.csv", header = TRUE, sep = ";")
positions$DEL.DATEEND = mdy(positions$DEL.DATEEND)
positions$DEL.DATEEND = as.Date(positions$DEL.DATEEND)
positions$DEL.DATESTART = mdy(positions$DEL.DATESTART)
positions$DEL.DATESTART = as.Date(positions$DEL.DATESTART)
positions$days = positions$DEL.DATEEND - as.Date(mdy("02/15/2021"))
write.csv2("filewithdates.csv")
mbuckets = as.data.frame(c(1,2,3,4,5,6,7,8,15,22,29,59,89,119,137,168,209,229,259,
            299,321,351,389,412,443,479,502,533,569,594,624,659,686,
            716,749,777,808,839,867,898,929,959,1019,1020,1051,1081,
            1112,1142,1173))
bucket = rep(0, length(positions$days))
cvar = 0
days = as.numeric(positions$days)
for (i in days) {
  cvar = cvar+1
  for (j in 1:length(mbuckets[,1])) {
    if(i<=mbuckets[j+1,1] & i>mbuckets[j,1]) {
      bucket[cvar] = mbuckets[j+1,1]
    }
  }
}

When I run the previous code, I get the error described in the title:

Error in if (i <= mbuckets[j + 1, 1] & i > mbuckets[j, 1]) { : missing value where TRUE/FALSE needed

anyway, the bucket vector seems to be set correctly:

> bucket
 [1] 321 321 321 321 321 321 686 321 321 686 321 321 321 321 321 321 321 321 321 321 321 321
  [23] 321 321 321 321 321 686 321 321 321 321 321 686 686 321 321 321 321 321 321 321 321 321
  [45] 321 321 321 321 321 321 321 321  59 321 321 321 321 321 321 321 321 321 321 321 321 321
  [67] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
  [89] 321 321 321 321  59 321 321 321 686 321 321 321 321 321 321 321 321 321 321 321 321 321
 [111]  59 137 229 321 321 321  59 137 321 229 321 686 686 321 321  59 137 229 321  59 137 321
 [133]  59 321 321 137  59 137 229 321 321 321  15  59 137 321 321 229 321  59 321 321 686  15
 [155] 321 321  59 686 321 321 686 686 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [177] 321 321 321 321 321 321 321 321 321 321 321 321 321  59  59 321 321 321 321 321 321 321
 [199] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [221] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321  15  15  59  59  89
 [243]  89 119 119 137 137 168 168 209 209 229 229 259 259 299 299 321 321 321 321 321 321 321
 [265] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [287] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [309] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321  59  59 321 321
 [331] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321  15  15  59
 [353]  59 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321  59 321 321 321
 [375] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [397] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [419] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [441] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [463] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321  59 321 321 321 321 321
 [485] 321 321 321 321 321  15  15  59  59  15  15  59  59 321  59 137  59 137 321 321 321 321
 [507] 321 321 321 321 321 321  59  59 137 137 321 321 321 321 321 321 321 321 321 321 321  59
 [529] 137  59 137 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [551] 321 321 321 321 321 321 321  59  59 137 137 229 229 321 321 321 321 321 321 321 321 321
 [573] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [595] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [617] 321 321 321 321 321 321 321 321 321 321 321 321 321  59 137 321 321  59 137 321 321 321
 [639] 321 321  59  59 137 137 321 321 229 229 321 321 321 321  59  59 321 321 137 137 229 229
 [661] 321 321 321 321 686 686 321 686 321 321 321 321 321 321 321  59 137  59 137 321 321 321
 [683] 321  59 321 686  59 137 137  59  59 137 137 321 321 321 321 321 321  59 137  59 321 321
 [705] 321 321 321 321  59  59 137 686 686 137 229 229 321 321  59  59 321 137 137 321 321 229
 [727] 229 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [749] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [771] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [793] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [815] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [837] 137 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [859] 321 321 321 321 321 321  15  15  59  59  89  89 119 119 137 137 168 168 209 209 229 229
 [881] 259 259 299 299 321 321  59 137 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [903] 321 321 321 321 321  59  59 137 137 229 229 321 321 321 321 321 321 321 321 321 321 321
 [925] 321 321 321 321 321 321 321 321 321 321 321 321 321  59 137 229 321 321 321 321 321 321
 [947] 321 321 321 321 321 321 321 686 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [969] 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321 321
 [991] 321 321 321 321 321 321 321 321 321 321
 [ reached getOption("max.print") -- omitted 25835 entries ]

Even if the the code seems to work beyond the error, where does the error come from?

I suspect the problem is in the variable days, since the only difference between both codes is the definition of that variable, but I have tried a lot of things with no success.

Aucun commentaire:

Enregistrer un commentaire