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