Skip to contents
library(saferTool2)


Simple example

permut(data1 = 1:10, data2 = 10:1, seed = 1, print.count = 1e5, cor.limit = 0.5, safer_check = TRUE)
> 
> CORRELATION DECREASE AFTER A SINGLE PERMUTATION: 0.01212
> FIRST WHILE LOOP STEP -> GOING OUT FROM EQUALITY | LOOP COUNT: 1 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> FIRST WHILE LOOP STEP END | LOOP COUNT: 1 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879 | TOTAL SPENT TIME: 0.013
> WHILE/FOR LOOPS INITIATION | LOOP COUNT: 1 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 1 | LOOP COUNT: 1 | GO BACK: FALSE | LOOP NUMBER ESTIMATION: 58,333.33 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 2 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 29,166.67 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 3 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 14,583.33 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> FINAL WHILE LOOP | LOOP COUNT: 1 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.9879
> WHILE/FOR LOOPS END | LOOP COUNT: 59 | NB OF ROUNDS: 4 | CORRELATION LIMIT: 0.5 | ABS TEMPO CORRELATION: 0.4424 | TOTAL SPENT TIME: 0.85
> $data
>  [1]  3  7  1  4 10  2  5  9  6  8
> 
> $warn
> [1] "(1) INITIAL SPEARMAN CORRELATION BETWEEN data1 AND data2 HAS BEEN DETECTED AS NEGATIVE: -1. THE LOOP STEPS WILL BE PERFORMED USING POSITIVE CORRELATIONS BUT THE FINAL CORRELATION WILL BE NEGATIVE"
> 
> $cor
> [1] -0.4424242
> 
> $count
> [1] 59


Example showing that for loop, used in permut(), is faster than while loop

ini.time <- as.numeric(Sys.time()) ; 
count <- 0 ; 
for(i0 in 1:1e6){count <- count + 1} ; 
tempo.time <- as.numeric(Sys.time()) ; 
tempo.lapse <- saferTool::round2(as.numeric(lubridate::seconds_to_period(tempo.time - ini.time))) ;
tempo.lapse
> [1] 0.021


example showing that for loop, used in permut(), is faster than while loop

ini.time <- as.numeric(Sys.time()) ; 
count <- 0 ; 
while (count < 100) {count <- count + 1} ; 
tempo.time <- as.numeric(Sys.time()) ; 
tempo.lapse <- saferTool::round2(as.numeric(lubridate::seconds_to_period(tempo.time - ini.time))) ; 
tempo.lapse
> [1] 0.0073

permut(data1 = LETTERS[1:5], data2 = NULL, n = 10, seed = 1, print.count = 10, text.print = "CPU NB 4", safer_check = TRUE)
> 
> CPU NB 4 | FOR LOOP OF 10 LOOPS INITIATED | LOOP COUNT: 0
> CPU NB 4 | FOR LOOP 10 / 10 | TIME SPENT: 0 | EXPECTED END: 2024-09-03 17:28:45.509454
> CPU NB 4 | FOR LOOP ENDED | LOOP COUNT: 10
> $data
> [1] "E" "A" "B" "C" "D"
> 
> $warn
> NULL
> 
> $cor
> [1] 0
> 
> $count
> [1] 10

permut(data1 = 101:110, data2 = 21:30, seed = 1, print.count = 1e4, text.print = "", cor.method = "spearman", cor.limit = 0.2, safer_check = TRUE)
> 
> CORRELATION DECREASE AFTER A SINGLE PERMUTATION: 0.01212
> FIRST WHILE LOOP STEP -> GOING OUT FROM EQUALITY | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> FIRST WHILE LOOP STEP END | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879 | TOTAL SPENT TIME: 0.0047
> WHILE/FOR LOOPS INITIATION | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 1 | LOOP COUNT: 1 | GO BACK: FALSE | LOOP NUMBER ESTIMATION: 81,250 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> FOR LOOP | ROUND 1 | LOOP: 10,000 / 81,250 | TIME SPENT: 0.016 | EXPECTED END: 2024-09-03 17:28:46.433712
> FOR LOOP | ROUND 1 | LOOP: 20,000 / 81,250 | TIME SPENT: 0.031 | EXPECTED END: 2024-09-03 17:28:46.430863
> FOR LOOP | ROUND 1 | LOOP: 30,000 / 81,250 | TIME SPENT: 0.046 | EXPECTED END: 2024-09-03 17:28:46.429014
> FOR LOOP | ROUND 1 | LOOP: 40,000 / 81,250 | TIME SPENT: 0.064 | EXPECTED END: 2024-09-03 17:28:46.434596
> FOR LOOP | ROUND 1 | LOOP: 50,000 / 81,250 | TIME SPENT: 0.079 | EXPECTED END: 2024-09-03 17:28:46.432705
> FOR LOOP | ROUND 1 | LOOP: 60,000 / 81,250 | TIME SPENT: 0.093 | EXPECTED END: 2024-09-03 17:28:46.430989
> FOR LOOP | ROUND 1 | LOOP: 70,000 / 81,250 | TIME SPENT: 0.11 | EXPECTED END: 2024-09-03 17:28:46.429794
> FOR LOOP | ROUND 1 | LOOP: 80,000 / 81,250 | TIME SPENT: 0.13 | EXPECTED END: 2024-09-03 17:28:46.432449
> INITIAL SETTINGS BEFORE ROUND: 2 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 40,625 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> FOR LOOP | ROUND 2 | LOOP: 10,000 / 40,625 | TIME SPENT: 0.012 | EXPECTED END: 2024-09-03 17:28:46.489056
> FOR LOOP | ROUND 2 | LOOP: 20,000 / 40,625 | TIME SPENT: 0.03 | EXPECTED END: 2024-09-03 17:28:46.500594
> FOR LOOP | ROUND 2 | LOOP: 30,000 / 40,625 | TIME SPENT: 0.045 | EXPECTED END: 2024-09-03 17:28:46.50016
> FOR LOOP | ROUND 2 | LOOP: 40,000 / 40,625 | TIME SPENT: 0.059 | EXPECTED END: 2024-09-03 17:28:46.499796
> WHILE/FOR LOOPS END | LOOP COUNT: 40,626 | NB OF ROUNDS: 2 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.2 | TOTAL SPENT TIME: 0.82
> $data
>  [1] 106 102 110 105 104 109 107 108 101 103
> 
> $warn
> NULL
> 
> $cor
> [1] 0.2
> 
> $count
> [1] 40626


A way to use the cor.limit argument just considering data1

obs1 <- 101:110 ; 
permut(data1 = obs1, data2 = obs1, seed = 1, print.count = 1e6, cor.method = "spearman", cor.limit = 0.2)
> 
> CORRELATION DECREASE AFTER A SINGLE PERMUTATION: 0.01212
> FIRST WHILE LOOP STEP -> GOING OUT FROM EQUALITY | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> FIRST WHILE LOOP STEP END | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879 | TOTAL SPENT TIME: 0.054
> WHILE/FOR LOOPS INITIATION | LOOP COUNT: 1 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 1 | LOOP COUNT: 1 | GO BACK: FALSE | LOOP NUMBER ESTIMATION: 80,246.91 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 2 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 40,123.46 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 3 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 20,061.73 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> INITIAL SETTINGS BEFORE ROUND: 4 | LOOP COUNT: 1 | GO BACK: TRUE | LOOP NUMBER ESTIMATION: 10,030.86 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.9879
> FINAL WHILE LOOP | LOOP COUNT: 10,031.86 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.2727
> WHILE/FOR LOOPS END | LOOP COUNT: 10,032.86 | NB OF ROUNDS: 5 | CORRELATION LIMIT: 0.2 | ABS TEMPO CORRELATION: 0.2 | TOTAL SPENT TIME: 1.27
> $data
>  [1] 106 101 109 105 108 102 104 103 110 107
> 
> $warn
> NULL
> 
> $cor
> [1] 0.2
> 
> $count
> [1] 10032.86