From c6cc2ba5536eaa63a377da738336dbe2ad85fe8e Mon Sep 17 00:00:00 2001
From: gmillot <gael.millot@pasteur.fr>
Date: Tue, 22 Oct 2019 18:08:29 +0200
Subject: [PATCH] tempo saving

---
 cute_little_R_functions.R    | 16412 +++++++++++++++++----------------
 cute_little_R_functions.docx |   Bin 806266 -> 808440 bytes
 2 files changed, 8210 insertions(+), 8202 deletions(-)

diff --git a/cute_little_R_functions.R b/cute_little_R_functions.R
index bd679fb..24b6e60 100644
--- a/cute_little_R_functions.R
+++ b/cute_little_R_functions.R
@@ -14,6 +14,7 @@
 # add print warning argument using warning(warnings)
 # update graphic examples with good comment, as in barplot
 # Templates: https://prettydoc.statr.me/themes.html
+# # package: http://r-pkgs.had.co.nz/
 # https://pkgdown.r-lib.org/
 # https://rdrr.io/github/gastonstat/cointoss/
 # doc:https://www.sphinx-doc.org/en/master/man/sphinx-autogen.html considering that https://www.ericholscher.com/blog/2014/feb/11/sphinx-isnt-just-for-python/
@@ -83,192 +84,196 @@
 
 # Check OK: clear to go Apollo
 fun_check <- function(data, data.name = NULL, class = NULL, typeof = NULL, mode = NULL, length = NULL, prop = NULL, double.as.integer.allowed = FALSE, options = NULL, all.options.in.data = FALSE, na.contain = FALSE, neg.values = TRUE, print = TRUE, fun.name = NULL){
-    # AIM
-    # check the class, type, mode and length of the data argument
-    # mainly used to check the arguments of other functions
-    # check also other kind of data parameters, is it a proportion? Is it type double but numbers without decimal part?
-    # if options = NULL, then at least class, type, mode or length must be non null
-    # if options is non null, then class, type and mode must be NULL, and length can be NULL or specified
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # none
-    # ARGUMENTS
-    # data: object to test
-    # data.name: name of the object to test. If NULL, use the name of the object assigned to the data argument
-    # class: one of the class() result or "vector"
-    # typeof: one of the typeof() result
-    # mode: one of the mode() result (for non vector object)
-    # length: length of the object
-    # prop: logical, are the numeric values between 0 and 1 (proportion)?
-    # double.as.integer.allowed: logical. If TRUE, no error is reported if argument is set to typeof = "integer" or class = "integer", while the reality is typeof = "double" or class = "numeric" but the numbers have a zero as modulo (remainder of a division). This means that i<-1 , which is typeof(i) -> "double" is considered as integer with double.as.integer.allowed = TRUE
-    # options: a vector of possible values for data
-    # all.options.in.data: If TRUE, all of the options must be present at least once in data, and nothing else. If FALSE, some of the options must be present in data, and nothing else
-    # na.contain: can data contains NA?
-    # neg.values: are negative numeric values authorized? BEWARE: only considered if set to FALSE, to check for non negative values when class is set to "numeric", "matrix", "array", "data.frame", "table", or typeof is set to "double", "integer", or mode is set to "numeric"
-    # print: print the error message if $problem is TRUE?
-    # fun.name: name of the function when fun_check() is used to check its argument. If non NULL, name will be added into the error message returned by fun_check()
-    # RETURN
-    # a list containing:
-    # $problem: logical. Is there any problem detected ?
-    # $text: the problem detected
-    # $param.name: name of the checked parameter
-    # EXAMPLES
-    # test <- 1:3 ; fun_check(data = test, data.name = NULL, print = TRUE, options = NULL, all.options.in.data = FALSE, class = NULL, typeof = NULL, mode = NULL, prop = TRUE, double.as.integer.allowed = FALSE, length = NULL)
-    # test <- 1:3 ; fun_check(data = test, print = TRUE, class = "numeric", typeof = NULL, double.as.integer.allowed = FALSE)
-    # test <- 1:3 ; fun_check(data = test, print = TRUE, class = "vector", mode = "numeric")
-    # test <- matrix(1:3) ; fun_check(data = test, print = TRUE, class = "vector", mode = "numeric")
-    # DEBUGGING
-    # data = expression(TEST) ; data.name = NULL ; class = "vector" ; typeof = NULL ; mode = NULL ; length = 1 ; prop = NULL ; double.as.integer.allowed = FALSE ; options = NULL ; all.options.in.data = FALSE ; na.contain = FALSE ; neg.values = TRUE ; print = TRUE ; fun.name = NULL
-    # function name: no used in this function for the error message, to avoid env colliding
-    # argument checking
-    if( ! is.null(data.name)){
-        if( ! (length(data.name) == 1 & class(data.name) == "character")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): data.name ARGUMENT MUST BE A SINGLE CHARACTER ELEMENT AND NOT ", paste(data.name, collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if(is.null(options) & is.null(class) & is.null(typeof) & is.null(mode) & is.null(prop) & is.null(length)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): AT LEAST ONE OF THE options, class, typeof, mode, prop, OR length ARGUMENT MUST BE SPECIFIED\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(options) & ( ! is.null(class) | ! is.null(typeof) | ! is.null(mode) | ! is.null(prop))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE class, typeof, mode AND prop ARGUMENTS MUST BE NULL IF THE option ARGUMENT IS SPECIFIED\nTHE option ARGUMENT MUST BE NULL IF THE class AND/OR typeof AND/OR mode AND/OR prop ARGUMENT IS SPECIFIED\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! (all(class(neg.values) == "logical") & length(neg.values) == 1 & any(is.na(neg.values)) != TRUE)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE neg.values ARGUMENT MUST BE TRUE OR FALSE ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(neg.values == FALSE & is.null(class) & is.null(typeof) & is.null(mode)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE neg.values ARGUMENT CANNOT BE SWITCHED TO FALSE IF class, typeof AND mode ARGUMENTS ARE NULL\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(class)){
-        if( ! all(class %in% c("vector", "logical", "integer", "numeric", "complex", "character", "matrix", "array", "data.frame", "list", "factor", "table", "expression", "name", "symbol", "function", "uneval") & any(is.na(class)) != TRUE)){ # not length == 1 here because ordered factors are class "factor" "ordered" (length == 2)
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT MUST BE ONE OF THESE VALUE:\n\"vector\", \"logical\", \"integer\", \"numeric\", \"complex\", \"character\", \"matrix\", \"array\", \"data.frame\", \"list\", \"factor\", \"table\", \"expression\", \"name\", \"symbol\", \"function\" \n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(neg.values == FALSE & ! any(class %in% c("vector", "numeric", "integer", "matrix", "array", "data.frame", "table"))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT CANNOT BE OTHER THAN \"vector\", \"numeric\", \"integer\", \"matrix\", \"array\", \"data.frame\", \"table\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! is.null(typeof)){
-        if( ! (all(typeof %in% c("logical", "integer", "double", "complex", "character", "list", "expression", "name", "symbol", "closure", "special", "builtin")) & length(typeof) == 1 & any(is.na(typeof)) != TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT MUST BE ONE OF THESE VALUE:\n\"logical\", \"integer\", \"double\", \"complex\", \"character\", \"list\", \"expression\", \"name\", \"symbol\", \"closure\", \"special\", \"builtin\" \n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(neg.values == FALSE & ! typeof %in% c("double", "integer")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT CANNOT BE OTHER THAN \"double\" OR \"integer\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! is.null(mode)){
-        if( ! (all(mode %in% c("logical", "numeric", "complex", "character", "list", "expression", "name", "symbol", "function")) & length(mode) == 1 & any(is.na(mode)) != TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT MUST BE ONE OF THESE VALUE:\n\"logical\", \"numeric\", \"complex\", \"character\", \"list\", \"expression\", \"name\", \"symbol\", \"function\"\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(neg.values == FALSE & mode != "numeric"){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT CANNOT BE OTHER THAN \"numeric\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! is.null(length)){
-        if( ! (is.numeric(length) & length(length) == 1 & ! grepl(length, pattern = "\\.") & any(is.na(length)) != TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): length ARGUMENT MUST BE A SINGLE INTEGER VALUE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! is.null(prop)){
-        if( ! (is.logical(prop) | length(prop) == 1 & any(is.na(prop)) != TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): prop ARGUMENT MUST BE TRUE OR FALSE ONLY\n\n================\n\n")
-            stop(tempo.cat)
-        }else if(prop == TRUE){
-            if( ! is.null(class)){
-                if( ! any(class %in% c("vector", "numeric", "integer", "matrix", "array", "data.frame", "table"))){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT CANNOT BE OTHER THAN \"vector\", \"numeric\", \"integer\", \"matrix\", \"array\", \"data.frame\", \"table\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-            }
-            if( ! is.null(mode)){
-                if(mode != "numeric"){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT CANNOT BE OTHER THAN \"numeric\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-            }
-            if( ! is.null(typeof)){
-                if(typeof != "double"){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT CANNOT BE OTHER THAN \"double\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-            }
-        }
-    }
-    if( ! (all(class(double.as.integer.allowed) == "logical") & length(double.as.integer.allowed) == 1 & any(is.na(double.as.integer.allowed)) != TRUE)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE double.as.integer.allowed ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(double.as.integer.allowed, collapse = " "), "\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! (is.logical(all.options.in.data) & length(all.options.in.data) == 1 & any(is.na(all.options.in.data)) != TRUE)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): all.options.in.data ARGUMENT MUST BE A SINGLE LOGICAL VALUE (TRUE OR FALSE ONLY): ", paste(all.options.in.data, collapse = " "), "\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! (all(class(na.contain) == "logical") & length(na.contain) == 1 & any(is.na(na.contain)) != TRUE)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE na.contain ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(na.contain, collapse = " "), "\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! (all(class(print) == "logical") & length(print) == 1 & any(is.na(print)) != TRUE)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE print ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(print, collapse = " "), "\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(fun.name)){
-        if( ! (class(fun.name) == "character" & length(fun.name) == 1)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE fun.name ARGUMENT MUST BE A CHARACTER VECTOR OF LENGTH 1: ", paste(fun.name, collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
-    # end argument checking
-    # main code
-    if(is.null(data.name)){
-        data.name <- deparse(substitute(data))
-    }
-    problem <- FALSE
-    text <- paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER")
-    if( ! is.null(options)){
-        text <- ""
-        if( ! all(data %in% options)){
-            problem <- TRUE
-            text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", paste(unique(data[ ! (data %in% options)]), collapse = " "))
-        }
-        if(all.options.in.data == TRUE){
-            if( ! all(options %in% data)){
-                problem <- TRUE
-                if(text == ""){
-                    text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", unique(data[ ! (data %in% options)]))
-                }else{
-                    text <- paste0(text, "\n", ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", unique(data[ ! (data %in% options)]))
-                }
-            }
-        }
-        if( ! is.null(length)){
-            if(length(data) != length){
-                problem <- TRUE
-                if(text == ""){
-                    text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
-                }else{
-                    text <- paste0(text, "\n", ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
-                }
-            }
-        }
-        if(text == ""){
-            text <- paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER")
-        }
-    }
-    arg.names <- c("class", "typeof", "mode", "length")
-    if(is.null(options)){
-        for(i2 in 1:length(arg.names)){
-            if( ! is.null(get(arg.names[i2]))){
-                # script to execute
-                tempo.script <- '
+# AIM
+# check the class, type, mode and length of the data argument
+# mainly used to check the arguments of other functions
+# check also other kind of data parameters, is it a proportion? Is it type double but numbers without decimal part?
+# if options = NULL, then at least class, type, mode or length must be non null
+# if options is non null, then class, type and mode must be NULL, and length can be NULL or specified
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data: object to test
+# data.name: name of the object to test. If NULL, use the name of the object assigned to the data argument
+# class: one of the class() result or "vector"
+# typeof: one of the typeof() result
+# mode: one of the mode() result (for non vector object)
+# length: length of the object
+# prop: logical, are the numeric values between 0 and 1 (proportion)?
+# double.as.integer.allowed: logical. If TRUE, no error is reported if argument is set to typeof = "integer" or class = "integer", while the reality is typeof = "double" or class = "numeric" but the numbers have a zero as modulo (remainder of a division). This means that i<-1 , which is typeof(i) -> "double" is considered as integer with double.as.integer.allowed = TRUE
+# options: a vector of possible values for data
+# all.options.in.data: If TRUE, all of the options must be present at least once in data, and nothing else. If FALSE, some of the options must be present in data, and nothing else
+# na.contain: can data contains NA?
+# neg.values: are negative numeric values authorized? BEWARE: only considered if set to FALSE, to check for non negative values when class is set to "numeric", "matrix", "array", "data.frame", "table", or typeof is set to "double", "integer", or mode is set to "numeric"
+# print: print the error message if $problem is TRUE? See the example section
+# fun.name: name of the function when fun_check() is used to check its argument. If non NULL, name will be added into the error message returned by fun_check()
+# RETURN
+# a list containing:
+# $problem: logical. Is there any problem detected ?
+# $text: the problem detected
+# $param.name: name of the checked parameter
+# EXAMPLES
+# test <- 1:3 ; fun_check(data = test, data.name = NULL, print = TRUE, options = NULL, all.options.in.data = FALSE, class = NULL, typeof = NULL, mode = NULL, prop = TRUE, double.as.integer.allowed = FALSE, length = NULL)
+# test <- 1:3 ; fun_check(data = test, print = TRUE, class = "numeric", typeof = NULL, double.as.integer.allowed = FALSE)
+# test <- 1:3 ; fun_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+# argument print with and without assignation
+# test <- 1:3 ; tempo <- fun_check(data = test, print = TRUE, class = "vector", mode = "character")
+# test <- 1:3 ; tempo <- fun_check(data = test, print = FALSE, class = "vector", mode = "character") # the assignation allows to recover a problem without printing it
+# test <- 1:3 ; fun_check(data = test, print = TRUE, class = "vector", mode = "character")
+# test <- matrix(1:3) ; fun_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+# DEBUGGING
+# data = expression(TEST) ; data.name = NULL ; class = "vector" ; typeof = NULL ; mode = NULL ; length = 1 ; prop = NULL ; double.as.integer.allowed = FALSE ; options = NULL ; all.options.in.data = FALSE ; na.contain = FALSE ; neg.values = TRUE ; print = TRUE ; fun.name = NULL
+# function name: no used in this function for the error message, to avoid env colliding
+# argument checking
+if( ! is.null(data.name)){
+if( ! (length(data.name) == 1 & class(data.name) == "character")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): data.name ARGUMENT MUST BE A SINGLE CHARACTER ELEMENT AND NOT ", paste(data.name, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if(is.null(options) & is.null(class) & is.null(typeof) & is.null(mode) & is.null(prop) & is.null(length)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): AT LEAST ONE OF THE options, class, typeof, mode, prop, OR length ARGUMENT MUST BE SPECIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(options) & ( ! is.null(class) | ! is.null(typeof) | ! is.null(mode) | ! is.null(prop))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE class, typeof, mode AND prop ARGUMENTS MUST BE NULL IF THE option ARGUMENT IS SPECIFIED\nTHE option ARGUMENT MUST BE NULL IF THE class AND/OR typeof AND/OR mode AND/OR prop ARGUMENT IS SPECIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (all(class(neg.values) == "logical") & length(neg.values) == 1 & any(is.na(neg.values)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE neg.values ARGUMENT MUST BE TRUE OR FALSE ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+if(neg.values == FALSE & is.null(class) & is.null(typeof) & is.null(mode)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE neg.values ARGUMENT CANNOT BE SWITCHED TO FALSE IF class, typeof AND mode ARGUMENTS ARE NULL\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(class)){
+if( ! all(class %in% c("vector", "logical", "integer", "numeric", "complex", "character", "matrix", "array", "data.frame", "list", "factor", "table", "expression", "name", "symbol", "function", "uneval") & any(is.na(class)) != TRUE)){ # not length == 1 here because ordered factors are class "factor" "ordered" (length == 2)
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT MUST BE ONE OF THESE VALUE:\n\"vector\", \"logical\", \"integer\", \"numeric\", \"complex\", \"character\", \"matrix\", \"array\", \"data.frame\", \"list\", \"factor\", \"table\", \"expression\", \"name\", \"symbol\", \"function\" \n\n================\n\n")
+stop(tempo.cat)
+}
+if(neg.values == FALSE & ! any(class %in% c("vector", "numeric", "integer", "matrix", "array", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT CANNOT BE OTHER THAN \"vector\", \"numeric\", \"integer\", \"matrix\", \"array\", \"data.frame\", \"table\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(typeof)){
+if( ! (all(typeof %in% c("logical", "integer", "double", "complex", "character", "list", "expression", "name", "symbol", "closure", "special", "builtin")) & length(typeof) == 1 & any(is.na(typeof)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT MUST BE ONE OF THESE VALUE:\n\"logical\", \"integer\", \"double\", \"complex\", \"character\", \"list\", \"expression\", \"name\", \"symbol\", \"closure\", \"special\", \"builtin\" \n\n================\n\n")
+stop(tempo.cat)
+}
+if(neg.values == FALSE & ! typeof %in% c("double", "integer")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT CANNOT BE OTHER THAN \"double\" OR \"integer\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(mode)){
+if( ! (all(mode %in% c("logical", "numeric", "complex", "character", "list", "expression", "name", "symbol", "function")) & length(mode) == 1 & any(is.na(mode)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT MUST BE ONE OF THESE VALUE:\n\"logical\", \"numeric\", \"complex\", \"character\", \"list\", \"expression\", \"name\", \"symbol\", \"function\"\n\n================\n\n")
+stop(tempo.cat)
+}
+if(neg.values == FALSE & mode != "numeric"){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT CANNOT BE OTHER THAN \"numeric\" IF neg.values ARGUMENT IS SWITCHED TO FALSE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(length)){
+if( ! (is.numeric(length) & length(length) == 1 & ! grepl(length, pattern = "\\.") & any(is.na(length)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): length ARGUMENT MUST BE A SINGLE INTEGER VALUE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(prop)){
+if( ! (is.logical(prop) | length(prop) == 1 & any(is.na(prop)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): prop ARGUMENT MUST BE TRUE OR FALSE ONLY\n\n================\n\n")
+stop(tempo.cat)
+}else if(prop == TRUE){
+if( ! is.null(class)){
+if( ! any(class %in% c("vector", "numeric", "integer", "matrix", "array", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): class ARGUMENT CANNOT BE OTHER THAN \"vector\", \"numeric\", \"integer\", \"matrix\", \"array\", \"data.frame\", \"table\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(mode)){
+if(mode != "numeric"){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): mode ARGUMENT CANNOT BE OTHER THAN \"numeric\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(typeof)){
+if(typeof != "double"){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): typeof ARGUMENT CANNOT BE OTHER THAN \"double\" IF prop ARGUMENT IS TRUE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+}
+if( ! (all(class(double.as.integer.allowed) == "logical") & length(double.as.integer.allowed) == 1 & any(is.na(double.as.integer.allowed)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE double.as.integer.allowed ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(double.as.integer.allowed, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (is.logical(all.options.in.data) & length(all.options.in.data) == 1 & any(is.na(all.options.in.data)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): all.options.in.data ARGUMENT MUST BE A SINGLE LOGICAL VALUE (TRUE OR FALSE ONLY): ", paste(all.options.in.data, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (all(class(na.contain) == "logical") & length(na.contain) == 1 & any(is.na(na.contain)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE na.contain ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(na.contain, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (all(class(print) == "logical") & length(print) == 1 & any(is.na(print)) != TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE print ARGUMENT MUST BE TRUE OR FALSE ONLY: ", paste(print, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(fun.name)){
+if( ! (class(fun.name) == "character" & length(fun.name) == 1)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN fun_check(): THE fun.name ARGUMENT MUST BE A CHARACTER VECTOR OF LENGTH 1: ", paste(fun.name, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
+# end argument checking
+# main code
+if(is.null(data.name)){
+data.name <- deparse(substitute(data))
+}
+problem <- FALSE
+text <- paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER")
+if( ! is.null(options)){
+text <- ""
+if( ! all(data %in% options)){
+problem <- TRUE
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", paste(unique(data[ ! (data %in% options)]), collapse = " "))
+}
+if(all.options.in.data == TRUE){
+if( ! all(options %in% data)){
+problem <- TRUE
+if(text == ""){
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", unique(data[ ! (data %in% options)]))
+}else{
+text <- paste0(text, "\n", ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE SOME OF THESE OPTIONS: ", paste(options, collapse = " "), "\nTHE PROBLEMATIC ELEMENTS OF ", data.name, " ARE: ", unique(data[ ! (data %in% options)]))
+}
+}
+}
+if( ! is.null(length)){
+if(length(data) != length){
+problem <- TRUE
+if(text == ""){
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
+}else{
+text <- paste0(text, "\n", ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
+}
+}
+}
+if(text == ""){
+text <- paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER")
+}
+}
+arg.names <- c("class", "typeof", "mode", "length")
+if(is.null(options)){
+for(i2 in 1:length(arg.names)){
+if( ! is.null(get(arg.names[i2]))){
+# script to execute
+tempo.script <- '
 problem <- TRUE ;
 if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
 text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": THE ", data.name, " PARAMETER MUST BE ") ;
@@ -277,57 +282,57 @@ text <- paste0(text, " AND ");
 }
 text <- paste0(text, toupper(arg.names[i2]), " ", get(arg.names[i2]))
 '
-            # end script to execute
-            if(typeof(data) == "double" & double.as.integer.allowed == TRUE & ((arg.names[i2] == "class" & get(arg.names[i2]) == "integer") | (arg.names[i2] == "typeof" & get(arg.names[i2]) == "integer"))){
-                if(! all(data%%1 == 0)){ # to check integers (use %%, meaning the remaining of a division): see the precedent line
-                    eval(parse(text = tempo.script)) # execute tempo.script
-                }
-            }else if(get(arg.names[i2]) != "vector" & eval(parse(text = paste0(arg.names[i2], "(data)"))) != get(arg.names[i2])){
-                eval(parse(text = tempo.script)) # execute tempo.script
-            }else if(arg.names[i2] == "class" & get(arg.names[i2]) == "vector" & ! (class(data) == "numeric" | class(data) == "integer" | class(data) == "character" | class(data) == "logical")){
-                eval(parse(text = tempo.script)) # execute tempo.script
-            }
-            }
-        }
-    }
+# end script to execute
+if(typeof(data) == "double" & double.as.integer.allowed == TRUE & ((arg.names[i2] == "class" & get(arg.names[i2]) == "integer") | (arg.names[i2] == "typeof" & get(arg.names[i2]) == "integer"))){
+if(! all(data%%1 == 0)){ # to check integers (use %%, meaning the remaining of a division): see the precedent line
+eval(parse(text = tempo.script)) # execute tempo.script
+}
+}else if(get(arg.names[i2]) != "vector" & eval(parse(text = paste0(arg.names[i2], "(data)"))) != get(arg.names[i2])){
+eval(parse(text = tempo.script)) # execute tempo.script
+}else if(arg.names[i2] == "class" & get(arg.names[i2]) == "vector" & ! (class(data) == "numeric" | class(data) == "integer" | class(data) == "character" | class(data) == "logical")){
+eval(parse(text = tempo.script)) # execute tempo.script
+}
+}
+}
+}
 if( ! is.null(prop)){
-    if(prop == TRUE){
-        if(any(data < 0 | data > 1, na.rm = TRUE)){
-            problem <- TRUE
-            if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-                text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
-            }else{
-                text <- paste0(text, " AND ")
-            }
-            text <- paste0(text, "THE ", data.name, " PARAMETER MUST BE DECIMAL VALUES BETWEEN 0 AND 1")
-        }
-    }
+if(prop == TRUE){
+if(any(data < 0 | data > 1, na.rm = TRUE)){
+problem <- TRUE
+if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
+}else{
+text <- paste0(text, " AND ")
+}
+text <- paste0(text, "THE ", data.name, " PARAMETER MUST BE DECIMAL VALUES BETWEEN 0 AND 1")
+}
+}
 }
 if(all(class(data) %in% "expression")){
-    data <- as.character(data) # to evaluate the presence of NA
+data <- as.character(data) # to evaluate the presence of NA
 }
 if(na.contain == FALSE & any(is.na(data)) == TRUE){
-    problem <- TRUE
-    if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-        text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
-    }else{
-        text <- paste0(text, " AND ")
-    }
-    text <- paste0(text, "THE ", data.name, " PARAMETER CONTAINS NA WHILE NOT AUTHORIZED (na.contain ARGUMENT SET TO FALSE)")
+problem <- TRUE
+if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
+}else{
+text <- paste0(text, " AND ")
+}
+text <- paste0(text, "THE ", data.name, " PARAMETER CONTAINS NA WHILE NOT AUTHORIZED (na.contain ARGUMENT SET TO FALSE)")
 }
 if(neg.values == FALSE){
-    if(any(data < 0, na.rm = TRUE)){
-        problem <- TRUE
-        if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-            text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
-        }else{
-            text <- paste0(text, " AND ")
-        }
-        text <- paste0(text, "THE ", data.name, " PARAMETER MUST BE NON NEGATIVE NUMERIC VALUES")
-    }
+if(any(data < 0, na.rm = TRUE)){
+problem <- TRUE
+if(identical(text, paste0(ifelse(is.null(fun.name), "", paste0("IN ", fun.name, ": ")), "NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
+text <- paste0(ifelse(is.null(fun.name), "ERROR", paste0("ERROR IN ", fun.name)), ": ")
+}else{
+text <- paste0(text, " AND ")
+}
+text <- paste0(text, "THE ", data.name, " PARAMETER MUST BE NON NEGATIVE NUMERIC VALUES")
+}
 }
 if(print == TRUE & problem == TRUE){
-    cat(paste0("\n\n================\n\n", text, "\n\n================\n\n"))
+cat(paste0("\n\n================\n\n", text, "\n\n================\n\n"))
 }
 output <- list(problem = problem, text = text, param.name = data.name)
 return(output)
@@ -339,89 +344,89 @@ return(output)
 
 # Check OK: clear to go Apollo
 fun_info <- function(data){
-    # AIM
-    # provide a full description of an object
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # none
-    # ARGUMENTS
-    # data: object to test
-    # RETURN
-    # a list containing the info
-    # please, use names(fun_info()) and remove what can be too big for easy analysis
-    # EXAMPLES
-    # fun_info(data = 1:3)
-    # fun_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
-    # fun_info(list(a = 1:3, b = ordered(factor(c("A", "B")))))
-    # DEBUGGING
-    # data = NULL # for function debugging
-    # data = 1:3 # for function debugging
-    # data = matrix(1:3) # for function debugging
-    # data = data.frame(a = 1:2, b = c("A", "B")) # for function debugging
-    # data = factor(c("b", "a")) # for function debugging
-    # data = ordered(factor(c("b", "a"))) # for function debugging
-    # data = list(a = 1:3, b = factor(c("A", "B"))) # for function debugging
-    # data = list(a = 1:3, b = ordered(factor(c("A", "B")))) # for function debugging
-    # function name: no need because no check and no message
-    # argument checking
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
-    # end argument checking
-    # main code
-    data.name <- deparse(substitute(data))
-    output <- list("NAME" = data.name)
-    tempo <- list("CLASS" = class(data))
-    output <- c(output, tempo)
-    tempo <- list("TYPE" = typeof(data))
-    output <- c(output, tempo)
-    tempo <- list("HEAD" = head(data))
-    output <- c(output, tempo)
-    if( ! is.null(data)){
-        tempo <- list("TAIL" = tail(data))
-        output <- c(output, tempo)
-        if( ! is.null(dim(data))){
-            tempo <- list("DIMENSION" = dim(data))
-            names(tempo[[1]]) <- c("NROW", "NCOL")
-            output <- c(output, tempo)
-        }
-        tempo <- list("SUMMARY" = summary(data))
-        output <- c(output, tempo)
-    }
-    if(all(class(data) == "data.frame" | class(data) == "matrix")){
-        tempo <- list("ROW_NAMES" = dimnames(data)[[1]])
-        output <- c(output, tempo)
-        tempo <- list("COLUM_NAMES" = dimnames(data)[[2]])
-        output <- c(output, tempo)
-    }
-    if(all(class(data) == "data.frame")){
-        tempo <- list("STRUCTURE" = ls.str(data))
-        output <- c(output, tempo)
-        tempo <- list("COLUMN_TYPE" = sapply(data, FUN = "typeof"))
-        if(any(sapply(data, FUN = "class") %in% "factor")){ # if an ordered factor is present, then sapply(data, FUN = "class") return a list but works with any(sapply(data, FUN = "class") %in% "factor") 
-            tempo.class <- sapply(data, FUN = "class")
-            if(any(unlist(tempo.class) %in% "ordered")){
-                tempo2 <- sapply(tempo.class, paste, collapse = " ") # paste the "ordered" factor" in "ordered factor"
-            }else{
-                tempo2 <- unlist(tempo.class)
-            }
-            tempo[["COLUMN_TYPE"]][grepl(x = tempo2, pattern = "factor")] <- tempo2[grepl(x = tempo2, pattern = "factor")]
-        }
-        output <- c(output, tempo)
-    }
-    if(all(class(data) == "list")){
-        tempo <- list("COMPARTMENT_NAMES" = names(data))
-        output <- c(output, tempo)
-        tempo <- list("COMPARTMENT_TYPE" = sapply(data, FUN = "typeof"))
-        if(any(unlist(sapply(data, FUN = "class")) %in% "factor")){ # if an ordered factor is present, then sapply(data, FUN = "class") return a list but works with any(sapply(data, FUN = "class") %in% "factor") 
-            tempo.class <- sapply(data, FUN = "class")
-            if(any(unlist(tempo.class) %in% "ordered")){
-                tempo2 <- sapply(tempo.class, paste, collapse = " ") # paste the "ordered" factor" in "ordered factor"
-            }else{
-                tempo2 <- unlist(tempo.class)
-            }
-            tempo[["COMPARTMENT_TYPE"]][grepl(x = tempo2, pattern = "factor")] <- tempo2[grepl(x = tempo2, pattern = "factor")]
-        }
-        output <- c(output, tempo)
-    }
-    return(output)
+# AIM
+# provide a full description of an object
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data: object to test
+# RETURN
+# a list containing the info
+# please, use names(fun_info()) and remove what can be too big for easy analysis
+# EXAMPLES
+# fun_info(data = 1:3)
+# fun_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
+# fun_info(list(a = 1:3, b = ordered(factor(c("A", "B")))))
+# DEBUGGING
+# data = NULL # for function debugging
+# data = 1:3 # for function debugging
+# data = matrix(1:3) # for function debugging
+# data = data.frame(a = 1:2, b = c("A", "B")) # for function debugging
+# data = factor(c("b", "a")) # for function debugging
+# data = ordered(factor(c("b", "a"))) # for function debugging
+# data = list(a = 1:3, b = factor(c("A", "B"))) # for function debugging
+# data = list(a = 1:3, b = ordered(factor(c("A", "B")))) # for function debugging
+# function name: no need because no check and no message
+# argument checking
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
+# end argument checking
+# main code
+data.name <- deparse(substitute(data))
+output <- list("NAME" = data.name)
+tempo <- list("CLASS" = class(data))
+output <- c(output, tempo)
+tempo <- list("TYPE" = typeof(data))
+output <- c(output, tempo)
+tempo <- list("HEAD" = head(data))
+output <- c(output, tempo)
+if( ! is.null(data)){
+tempo <- list("TAIL" = tail(data))
+output <- c(output, tempo)
+if( ! is.null(dim(data))){
+tempo <- list("DIMENSION" = dim(data))
+names(tempo[[1]]) <- c("NROW", "NCOL")
+output <- c(output, tempo)
+}
+tempo <- list("SUMMARY" = summary(data))
+output <- c(output, tempo)
+}
+if(all(class(data) == "data.frame" | class(data) == "matrix")){
+tempo <- list("ROW_NAMES" = dimnames(data)[[1]])
+output <- c(output, tempo)
+tempo <- list("COLUM_NAMES" = dimnames(data)[[2]])
+output <- c(output, tempo)
+}
+if(all(class(data) == "data.frame")){
+tempo <- list("STRUCTURE" = ls.str(data))
+output <- c(output, tempo)
+tempo <- list("COLUMN_TYPE" = sapply(data, FUN = "typeof"))
+if(any(sapply(data, FUN = "class") %in% "factor")){ # if an ordered factor is present, then sapply(data, FUN = "class") return a list but works with any(sapply(data, FUN = "class") %in% "factor") 
+tempo.class <- sapply(data, FUN = "class")
+if(any(unlist(tempo.class) %in% "ordered")){
+tempo2 <- sapply(tempo.class, paste, collapse = " ") # paste the "ordered" factor" in "ordered factor"
+}else{
+tempo2 <- unlist(tempo.class)
+}
+tempo[["COLUMN_TYPE"]][grepl(x = tempo2, pattern = "factor")] <- tempo2[grepl(x = tempo2, pattern = "factor")]
+}
+output <- c(output, tempo)
+}
+if(all(class(data) == "list")){
+tempo <- list("COMPARTMENT_NAMES" = names(data))
+output <- c(output, tempo)
+tempo <- list("COMPARTMENT_TYPE" = sapply(data, FUN = "typeof"))
+if(any(unlist(sapply(data, FUN = "class")) %in% "factor")){ # if an ordered factor is present, then sapply(data, FUN = "class") return a list but works with any(sapply(data, FUN = "class") %in% "factor") 
+tempo.class <- sapply(data, FUN = "class")
+if(any(unlist(tempo.class) %in% "ordered")){
+tempo2 <- sapply(tempo.class, paste, collapse = " ") # paste the "ordered" factor" in "ordered factor"
+}else{
+tempo2 <- unlist(tempo.class)
+}
+tempo[["COMPARTMENT_TYPE"]][grepl(x = tempo2, pattern = "factor")] <- tempo2[grepl(x = tempo2, pattern = "factor")]
+}
+output <- c(output, tempo)
+}
+return(output)
 }
 
 
@@ -430,214 +435,214 @@ fun_info <- function(data){
 
 # Check OK: clear to go Apollo
 fun_1d_comp <- function(data1, data2){
-    # AIM
-    # compare two 1D datasets (vector of factor or 1D table) of the same class or not. Check and report in a list if the 2 datasets have:
-    # same class
-    # common elements
-    # common element names (except factors)
-    # common levels (factors only)
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # none
-    # ARGUMENTS
-    # data1: vector or factor or 1D table
-    # data2: vector or factor or 1D table
-    # RETURN
-    # a list containing:
-    # $same.class: logical. Are class identical?
-    # $class: class of the 2 datasets (NULL otherwise)
-    # $same.length: logical. Are number of elements identical?
-    # $length: number of elements in the 2 datasets (NULL otherwise)
-    # $same.levels: logical. Are levels identical? (NULL if data1 and data2 are not factors)
-    # $levels: levels of the 2 datasets if identical (NULL otherwise or NULL if data1 and data2 are not factors)
-    # $any.id.levels: logical. Is there any identical levels? (NULL if data1 and data2 are not factors)
-    # $same.levels.pos1: position, in data1, of the levels identical in data2 (NULL if data1 and data2 are not factors)
-    # $same.levels.pos2: position, in data2, of the levels identical in data1 (NULL if data1 and data2 are not factors)
-    # $common.levels: common levels between data1 and data2 (can be a subset of $levels or not). NULL if no common levels or if data1 and data2 are not factors
-    # $same.name: logical. Are element names identical ?
-    # $name: name of elements of the 2 datasets if identical (NULL otherwise)
-    # $any.id.name: logical. Is there any element names identical ?
-    # $same.name.pos1: position, in data1, of the element names identical in data2
-    # $same.name.pos2: position, in data2, of the elements names identical in data1
-    # $common.names: common element names between data1 and data2 (can be a subset of $name or not). NULL if no common element names
-    # $any.id.element: logical. is there any identical elements ?
-    # $same.element.pos1: position, in data1, of the elements identical in data2
-    # $same.element.pos2: position, in data2, of the elements identical in data1
-    # $common.elements: common elements between data1 and data2. NULL if no common elements
-    # $identical.object: logical. Are objects identical (kind of object, element names and content)?
-    # $identical.content: logical. Are content objects identical (identical elements excluding kind of object and element names)?
-    # EXAMPLES
-    # obs1 = 1:5 ; obs2 = 1:5 ; names(obs1) <- LETTERS[1:5] ; names(obs2) <- LETTERS[1:5] ; fun_1d_comp(obs1, obs2)
-    # obs1 = 1:5 ; obs2 = 1:5 ; names(obs1) <- LETTERS[1:5] ; fun_1d_comp(obs1, obs2)
-    # obs1 = 1:5 ; obs2 = 3:6 ; names(obs1) <- LETTERS[1:5] ; names(obs2) <- LETTERS[1:4] ; fun_1d_comp(obs1, obs2)
-    # obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[1:5]) ; fun_1d_comp(obs1, obs2)
-    # obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[10:11]) ; fun_1d_comp(obs1, obs2)
-    # obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[4:7]) ; fun_1d_comp(obs1, obs2)
-    # obs1 = 1:5 ; obs2 = factor(LETTERS[1:5]) ; fun_1d_comp(obs1, obs2)
-    # obs1 = 1:5 ; obs2 = 1.1:6.1 ; fun_1d_comp(obs1, obs2)
-    # obs1 = as.table(1:5); obs2 = as.table(1:5) ; fun_1d_comp(obs1, obs2)
-    # obs1 = as.table(1:5); obs2 = 1:5 ; fun_1d_comp(obs1, obs2)
-    # DEBUGGING
-    # data1 = 1:5 ; data2 = 1:5 ; names(data1) <- LETTERS[1:5] ; names(data2) <- LETTERS[1:5] # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # argument checking
-    if( ! any(class(data1) %in% c("logical", "integer", "numeric", "character", "factor", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A NON NULL VECTOR, FACTOR OR 1D TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }else if(all(class(data1) %in% "table")){
-        if(length(dim(data1)) > 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A 1D TABLE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! any(class(data2) %in% c("logical", "integer", "numeric", "character", "factor", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A NON NULL VECTOR, FACTOR OR 1D TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }else if(all(class(data2) %in% "table")){
-        if(length(dim(data2)) > 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A 1D TABLE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
-    # end argument checking
-    # main code
-    same.class <- NULL
-    class <- NULL
-    same.length <- NULL
-    length <- NULL
-    same.levels <- NULL
-    levels <- NULL
-    any.id.levels <- NULL
-    same.levels.pos1 <- NULL
-    same.levels.pos2 <- NULL
-    common.levels <- NULL
-    same.name <- NULL
-    name <- NULL
-    any.id.name <- NULL
-    same.name.pos1 <- NULL
-    same.name.pos2 <- NULL
-    common.names <- NULL
-    any.id.element <- NULL
-    same.element.pos1 <- NULL
-    same.element.pos2 <- NULL
-    common.elements <- NULL
-    identical.object <- NULL
-    identical.content <- NULL
-    if(identical(data1, data2)){
-        same.class <- TRUE
-        class <- class(data1)
-        same.length <- TRUE
-        length <- length(data1)
-        if(any(class(data1) %in% "factor")){
-            same.levels <- TRUE
-            levels <- levels(data1)
-            any.id.levels <- TRUE
-            same.levels.pos1 <- 1:length(levels(data1))
-            same.levels.pos2 <- 1:length(levels(data2))
-            common.levels <- levels(data1)
-        }
-        if( ! is.null(names(data1))){
-            same.name <- TRUE
-            name <- names(data1)
-            any.id.name <- TRUE
-            same.name.pos1 <- 1:length(data1)
-            same.name.pos2 <- 1:length(data2)
-            common.names <- names(data1)
-        }
-        any.id.element <- TRUE
-        same.element.pos1 <- 1:length(data1)
-        same.element.pos2 <- 1:length(data2)
-        common.elements <- data1
-        identical.object <- TRUE
-        identical.content <- TRUE
-    }else{
-        identical.object <- FALSE
-        if( ! identical(class(data1), class(data2))){
-            same.class <- FALSE
-        }else{
-            same.class <- TRUE
-            class <- class(data1)
-        }
-        if( ! identical(length(data1), length(data2))){
-            same.length<- FALSE
-        }else{
-            same.length<- TRUE
-            length <- length(data1)
-        }
-        if(any(class(data1) %in% "factor") & any(class(data2) %in% "factor")){
-            if( ! identical(levels(data1), levels(data2))){
-                same.levels <- FALSE
-            }else{
-                same.levels <- TRUE
-                levels <- levels(data1)
-            }
-            any.id.levels <- FALSE
-            if(any(levels(data1) %in% levels(data2))){
-                any.id.levels <- TRUE
-                same.levels.pos1 <- which(levels(data1) %in% levels(data2))
-            }
-            if(any(levels(data2) %in% levels(data1))){
-                any.id.levels <- TRUE
-                same.levels.pos2 <- which(levels(data2) %in% levels(data1))
-            }
-            if(any.id.levels == TRUE){
-                common.levels <- unique(c(levels(data1)[same.levels.pos1], levels(data2)[same.levels.pos2]))
-            }
-        }
-        if(any(class(data1) %in% "factor")){ # to compare content
-            data1 <- as.character(data1)
-        }
-        if(any(class(data2) %in% "factor")){ # to compare content
-            data2 <- as.character(data2)
-        }
-        if( ! (is.null(names(data1)) & is.null(names(data2)))){
-            if( ! identical(names(data1), names(data2))){
-                same.name <- FALSE
-            }else{
-                same.name <- TRUE
-                name <- names(data1)
-            }
-            any.id.name <- FALSE
-            if(any(names(data1) %in% names(data2))){
-                any.id.name <- TRUE
-                same.name.pos1 <- which(names(data1) %in% names(data2))
-            }
-            if(any(names(data2) %in% names(data1))){
-                any.id.name <- TRUE
-                same.name.pos2 <- which(names(data2) %in% names(data1))
-            }
-            if(any.id.name == TRUE){
-                common.names <- unique(c(names(data1)[same.name.pos1], names(data2)[same.name.pos2]))
-            }
-        }
-        any.id.element <- FALSE
-        if(any(data1 %in% data2)){
-            any.id.element <- TRUE
-            same.element.pos1 <- which(data1 %in% data2)
-        }
-        if(any(data2 %in% data1)){
-            any.id.element <- TRUE
-            same.element.pos2 <- which(data2 %in% data1)
-        }
-        if(any.id.element == TRUE){
-            common.elements <- unique(c(data1[same.element.pos1], data2[same.element.pos2]))
-        }
-        if(same.length == TRUE & ! all(is.null(same.element.pos1), is.null(same.element.pos2))){
-            names(same.element.pos1) <- NULL
-            names(same.element.pos2) <- NULL
-            if(identical(same.element.pos1, same.element.pos2)){
-                identical.content <- TRUE
-            }else{
-                identical.content <- FALSE
-            }
-        }else{
-            identical.content <- FALSE
-        }
-    }
-    output <- list(same.class = same.class, class = class, same.length = same.length, length = length, same.levels = same.levels, levels = levels, any.id.levels = any.id.levels, same.levels.pos1 = same.levels.pos1, same.levels.pos2 = same.levels.pos2, common.levels = common.levels, same.name = same.name, name = name, any.id.name = any.id.name, same.name.pos1 = same.name.pos1, same.name.pos2 = same.name.pos2, common.names = common.names, any.id.element = any.id.element, same.element.pos1 = same.element.pos1, same.element.pos2 = same.element.pos2, common.elements = common.elements, identical.object = identical.object, identical.content = identical.content)
-    return(output)
+# AIM
+# compare two 1D datasets (vector of factor or 1D table) of the same class or not. Check and report in a list if the 2 datasets have:
+# same class
+# common elements
+# common element names (except factors)
+# common levels (factors only)
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data1: vector or factor or 1D table
+# data2: vector or factor or 1D table
+# RETURN
+# a list containing:
+# $same.class: logical. Are class identical?
+# $class: class of the 2 datasets (NULL otherwise)
+# $same.length: logical. Are number of elements identical?
+# $length: number of elements in the 2 datasets (NULL otherwise)
+# $same.levels: logical. Are levels identical? (NULL if data1 and data2 are not factors)
+# $levels: levels of the 2 datasets if identical (NULL otherwise or NULL if data1 and data2 are not factors)
+# $any.id.levels: logical. Is there any identical levels? (NULL if data1 and data2 are not factors)
+# $same.levels.pos1: position, in data1, of the levels identical in data2 (NULL if data1 and data2 are not factors)
+# $same.levels.pos2: position, in data2, of the levels identical in data1 (NULL if data1 and data2 are not factors)
+# $common.levels: common levels between data1 and data2 (can be a subset of $levels or not). NULL if no common levels or if data1 and data2 are not factors
+# $same.name: logical. Are element names identical ?
+# $name: name of elements of the 2 datasets if identical (NULL otherwise)
+# $any.id.name: logical. Is there any element names identical ?
+# $same.name.pos1: position, in data1, of the element names identical in data2
+# $same.name.pos2: position, in data2, of the elements names identical in data1
+# $common.names: common element names between data1 and data2 (can be a subset of $name or not). NULL if no common element names
+# $any.id.element: logical. is there any identical elements ?
+# $same.element.pos1: position, in data1, of the elements identical in data2
+# $same.element.pos2: position, in data2, of the elements identical in data1
+# $common.elements: common elements between data1 and data2. NULL if no common elements
+# $identical.object: logical. Are objects identical (kind of object, element names and content)?
+# $identical.content: logical. Are content objects identical (identical elements excluding kind of object and element names)?
+# EXAMPLES
+# obs1 = 1:5 ; obs2 = 1:5 ; names(obs1) <- LETTERS[1:5] ; names(obs2) <- LETTERS[1:5] ; fun_1d_comp(obs1, obs2)
+# obs1 = 1:5 ; obs2 = 1:5 ; names(obs1) <- LETTERS[1:5] ; fun_1d_comp(obs1, obs2)
+# obs1 = 1:5 ; obs2 = 3:6 ; names(obs1) <- LETTERS[1:5] ; names(obs2) <- LETTERS[1:4] ; fun_1d_comp(obs1, obs2)
+# obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[1:5]) ; fun_1d_comp(obs1, obs2)
+# obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[10:11]) ; fun_1d_comp(obs1, obs2)
+# obs1 = factor(LETTERS[1:5]) ; obs2 = factor(LETTERS[4:7]) ; fun_1d_comp(obs1, obs2)
+# obs1 = 1:5 ; obs2 = factor(LETTERS[1:5]) ; fun_1d_comp(obs1, obs2)
+# obs1 = 1:5 ; obs2 = 1.1:6.1 ; fun_1d_comp(obs1, obs2)
+# obs1 = as.table(1:5); obs2 = as.table(1:5) ; fun_1d_comp(obs1, obs2)
+# obs1 = as.table(1:5); obs2 = 1:5 ; fun_1d_comp(obs1, obs2)
+# DEBUGGING
+# data1 = 1:5 ; data2 = 1:5 ; names(data1) <- LETTERS[1:5] ; names(data2) <- LETTERS[1:5] # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# argument checking
+if( ! any(class(data1) %in% c("logical", "integer", "numeric", "character", "factor", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A NON NULL VECTOR, FACTOR OR 1D TABLE\n\n================\n\n")
+stop(tempo.cat)
+}else if(all(class(data1) %in% "table")){
+if(length(dim(data1)) > 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A 1D TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! any(class(data2) %in% c("logical", "integer", "numeric", "character", "factor", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A NON NULL VECTOR, FACTOR OR 1D TABLE\n\n================\n\n")
+stop(tempo.cat)
+}else if(all(class(data2) %in% "table")){
+if(length(dim(data2)) > 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A 1D TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
+# end argument checking
+# main code
+same.class <- NULL
+class <- NULL
+same.length <- NULL
+length <- NULL
+same.levels <- NULL
+levels <- NULL
+any.id.levels <- NULL
+same.levels.pos1 <- NULL
+same.levels.pos2 <- NULL
+common.levels <- NULL
+same.name <- NULL
+name <- NULL
+any.id.name <- NULL
+same.name.pos1 <- NULL
+same.name.pos2 <- NULL
+common.names <- NULL
+any.id.element <- NULL
+same.element.pos1 <- NULL
+same.element.pos2 <- NULL
+common.elements <- NULL
+identical.object <- NULL
+identical.content <- NULL
+if(identical(data1, data2)){
+same.class <- TRUE
+class <- class(data1)
+same.length <- TRUE
+length <- length(data1)
+if(any(class(data1) %in% "factor")){
+same.levels <- TRUE
+levels <- levels(data1)
+any.id.levels <- TRUE
+same.levels.pos1 <- 1:length(levels(data1))
+same.levels.pos2 <- 1:length(levels(data2))
+common.levels <- levels(data1)
+}
+if( ! is.null(names(data1))){
+same.name <- TRUE
+name <- names(data1)
+any.id.name <- TRUE
+same.name.pos1 <- 1:length(data1)
+same.name.pos2 <- 1:length(data2)
+common.names <- names(data1)
+}
+any.id.element <- TRUE
+same.element.pos1 <- 1:length(data1)
+same.element.pos2 <- 1:length(data2)
+common.elements <- data1
+identical.object <- TRUE
+identical.content <- TRUE
+}else{
+identical.object <- FALSE
+if( ! identical(class(data1), class(data2))){
+same.class <- FALSE
+}else{
+same.class <- TRUE
+class <- class(data1)
+}
+if( ! identical(length(data1), length(data2))){
+same.length<- FALSE
+}else{
+same.length<- TRUE
+length <- length(data1)
+}
+if(any(class(data1) %in% "factor") & any(class(data2) %in% "factor")){
+if( ! identical(levels(data1), levels(data2))){
+same.levels <- FALSE
+}else{
+same.levels <- TRUE
+levels <- levels(data1)
+}
+any.id.levels <- FALSE
+if(any(levels(data1) %in% levels(data2))){
+any.id.levels <- TRUE
+same.levels.pos1 <- which(levels(data1) %in% levels(data2))
+}
+if(any(levels(data2) %in% levels(data1))){
+any.id.levels <- TRUE
+same.levels.pos2 <- which(levels(data2) %in% levels(data1))
+}
+if(any.id.levels == TRUE){
+common.levels <- unique(c(levels(data1)[same.levels.pos1], levels(data2)[same.levels.pos2]))
+}
+}
+if(any(class(data1) %in% "factor")){ # to compare content
+data1 <- as.character(data1)
+}
+if(any(class(data2) %in% "factor")){ # to compare content
+data2 <- as.character(data2)
+}
+if( ! (is.null(names(data1)) & is.null(names(data2)))){
+if( ! identical(names(data1), names(data2))){
+same.name <- FALSE
+}else{
+same.name <- TRUE
+name <- names(data1)
+}
+any.id.name <- FALSE
+if(any(names(data1) %in% names(data2))){
+any.id.name <- TRUE
+same.name.pos1 <- which(names(data1) %in% names(data2))
+}
+if(any(names(data2) %in% names(data1))){
+any.id.name <- TRUE
+same.name.pos2 <- which(names(data2) %in% names(data1))
+}
+if(any.id.name == TRUE){
+common.names <- unique(c(names(data1)[same.name.pos1], names(data2)[same.name.pos2]))
+}
+}
+any.id.element <- FALSE
+if(any(data1 %in% data2)){
+any.id.element <- TRUE
+same.element.pos1 <- which(data1 %in% data2)
+}
+if(any(data2 %in% data1)){
+any.id.element <- TRUE
+same.element.pos2 <- which(data2 %in% data1)
+}
+if(any.id.element == TRUE){
+common.elements <- unique(c(data1[same.element.pos1], data2[same.element.pos2]))
+}
+if(same.length == TRUE & ! all(is.null(same.element.pos1), is.null(same.element.pos2))){
+names(same.element.pos1) <- NULL
+names(same.element.pos2) <- NULL
+if(identical(same.element.pos1, same.element.pos2)){
+identical.content <- TRUE
+}else{
+identical.content <- FALSE
+}
+}else{
+identical.content <- FALSE
+}
+}
+output <- list(same.class = same.class, class = class, same.length = same.length, length = length, same.levels = same.levels, levels = levels, any.id.levels = any.id.levels, same.levels.pos1 = same.levels.pos1, same.levels.pos2 = same.levels.pos2, common.levels = common.levels, same.name = same.name, name = name, any.id.name = any.id.name, same.name.pos1 = same.name.pos1, same.name.pos2 = same.name.pos2, common.names = common.names, any.id.element = any.id.element, same.element.pos1 = same.element.pos1, same.element.pos2 = same.element.pos2, common.elements = common.elements, identical.object = identical.object, identical.content = identical.content)
+return(output)
 }
 
 
@@ -646,305 +651,305 @@ fun_1d_comp <- function(data1, data2){
 
 # Check OK: clear to go Apollo
 fun_2d_comp <- function(data1, data2){
-    # AIM
-    # compare two 2D datasets of the same class or not. Check and report in a list if the 2 datasets have:
-    # same class
-    # common row names
-    # common column names
-    # same row number
-    # same column number
-    # potential identical rows between the 2 datasets
-    # potential identical columns between the 2 datasets
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # none
-    # ARGUMENTS
-    # data1: matrix, data frame or table
-    # data2: matrix, data frame or table
-    # RETURN
-    # a list containing:
-    # $same.class: logical. Are class identical ?
-    # $class: classes of the 2 datasets (NULL otherwise)
-    # $same.dim: logical. Are dimension identical ?
-    # $dim: dimension of the 2 datasets (NULL otherwise)
-    # $same.row.nb: logical. Are number of rows identical ?
-    # $row.nb: nb of rows of the 2 datasets if identical (NULL otherwise)
-    # $same.col.nb: logical. Are number of columns identical ?
-    # $col.nb: nb of columns of the 2 datasets if identical (NULL otherwise)
-    # $same.row.name: logical. Are row names identical ? NULL if no row names in the two 2D datasets
-    # $row.name: name of rows of the 2 datasets if identical (NULL otherwise)
-    # $any.id.row.name: logical. Is there any row names identical ? NULL if no row names in the two 2D datasets
-    # $same.row.name.pos1: position, in data1, of the row names identical in data2
-    # $same.row.name.pos2: position, in data2, of the row names identical in data1
-    # $common.row.names: common row names between data1 and data2 (can be a subset of $name or not). NULL if no common row names
-    # $same.col.name: logical. Are column names identical ? NULL if no col names in the two 2D datasets
-    # $col.name: name of columns of the 2 datasets if identical (NULL otherwise)
-    # $any.id.col.name: logical. Is there any column names identical ? NULL if no col names in the two 2D datasets
-    # $same.col.name.pos1: position, in data1, of the column names identical in data2
-    # $same.col.name.pos2: position, in data2, of the column names identical in data1
-    # $common.col.names: common column names between data1 and data2 (can be a subset of $name or not). NULL if no common column names
-    # $any.id.row: logical. is there identical rows (not considering row names) ?
-    # $same.row.pos1: position, in data1, of the rows identical in data2 (not considering row names)
-    # $same.row.pos2: position, in data2, of the rows identical in data1 (not considering row names)
-    # $any.id.col: logical. is there identical columns (not considering column names)?
-    # $same.col.pos1: position in data1 of the cols identical in data2 (not considering column names)
-    # $same.col.pos2: position in data2 of the cols identical in data1 (not considering column names)
-    # $identical.object: logical. Are objects identical (including row & column names)?
-    # $identical.content: logical. Are content objects identical (identical excluding row & column names)?
-    # EXAMPLES
-    # obs1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
-    # obs1 = matrix(101:110, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
-    # obs1 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
-    # obs1 = t(matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs2 = t(matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4])))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
-    # DEBUGGING
-    # data1 = matrix(1:10, ncol = 5) ; data2 = matrix(1:10, ncol = 5) # for function debugging
-    # data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5) # for function debugging
-    # data1 = matrix(1:15, byrow = TRUE, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # data1 = matrix(1:15, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # data1 = matrix(1:15, ncol = 5, dimnames = list(paste0("A", letters[1:3]), LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # data1 = matrix(1:15, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:12, ncol = 4, dimnames = list(letters[1:3], LETTERS[1:4])) # for function debugging
-    # data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(101:110, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # data1 = data.frame(a = 1:3, b= letters[1:3], row.names = LETTERS[1:3]) ; data2 = data.frame(A = 1:3, B= letters[1:3]) # for function debugging
-    # data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) # for function debugging
-    # data1 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4]))) # for function debugging
-    # data1 = table(Exp1 = c("A", "A", "A", "B", "B", "B"), Exp2 = c("A1", "B1", "A1", "C1", "C1", "B1")) ; data2 = data.frame(A = 1:3, B= letters[1:3]) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # argument checking
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! any(class(data2) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
-    # end argument checking
-    # main code
-    same.class <- NULL
-    class <- NULL
-    same.dim <- NULL
-    dim <- NULL
-    same.row.nb <- NULL
-    row.nb <- NULL
-    same.col.nb <- NULL
-    col.nb <- NULL
-    same.row.name <- NULL
-    row.name <- NULL
-    any.id.row.name <- NULL
-    same.row.name.pos1 <- NULL
-    same.row.name.pos2 <- NULL
-    common.row.names <- NULL
-    same.col.name <- NULL
-    any.id.col.name <- NULL
-    same.col.name.pos1 <- NULL
-    same.col.name.pos2 <- NULL
-    common.col.names <- NULL
-    col.name <- NULL
-    any.id.row <- NULL
-    same.row.pos1 <- NULL
-    same.row.pos2 <- NULL
-    any.id.col <- NULL
-    same.col.pos1 <- NULL
-    same.col.pos2 <- NULL
-    identical.object <- NULL
-    identical.content <- NULL
-    if(identical(data1, data2) & any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        same.class <- TRUE
-        class <- class(data1)
-        same.dim <- TRUE
-        dim <- dim(data1)
-        same.row.nb <- TRUE
-        row.nb <- nrow(data1)
-        same.col.nb <- TRUE
-        col.nb <- ncol(data1)
-        same.row.name <- TRUE
-        row.name <- dimnames(data1)[[1]]
-        any.id.row.name <- TRUE
-        same.row.name.pos1 <- 1:row.nb
-        same.row.name.pos2 <- 1:row.nb
-        common.row.names <- dimnames(data1)[[1]]
-        same.col.name <- TRUE
-        col.name <- dimnames(data1)[[2]]
-        any.id.col.name <- TRUE
-        same.col.name.pos1 <- 1:col.nb
-        same.col.name.pos2 <- 1:col.nb
-        common.col.names <- dimnames(data1)[[2]]
-        any.id.row <- TRUE
-        same.row.pos1 <- 1:row.nb
-        same.row.pos2 <- 1:row.nb
-        any.id.col <- TRUE
-        same.col.pos1 <- 1:col.nb
-        same.col.pos2 <- 1:col.nb
-        identical.object <- TRUE
-        identical.content <- TRUE
-    }else{
-        identical.object <- FALSE
-        if(all(class(data1) == "table") & length(dim(data1)) == 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT IS A 1D TABLE. USE THE info_1D_dataset_fun FUNCTION\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(all(class(data2) == "table") & length(dim(data2)) == 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT IS A 1D TABLE. USE THE info_1D_dataset_fun FUNCTION\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if( ! identical(class(data1), class(data2))){
-            same.class <- FALSE
-        }else if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 AND data2 ARGUMENTS MUST BE EITHER MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            same.class <- TRUE
-            class <- class(data1)
-        }
-        if( ! identical(dim(data1), dim(data2))){
-            same.dim <- FALSE
-        }else{
-            same.dim <- TRUE
-            dim <- dim(data1)
-        }
-        if( ! identical(nrow(data1), nrow(data2))){
-            same.row.nb <- FALSE
-        }else{
-            same.row.nb <- TRUE
-            row.nb <- nrow(data1)
-        }
-        if( ! identical(ncol(data1), ncol(data2))){
-            same.col.nb <- FALSE
-        }else{
-            same.col.nb <- TRUE
-            col.nb <- ncol(data1)
-        }
-        # row and col names
-        if(is.null(dimnames(data1)) & is.null(dimnames(data2))){
-            same.row.name <- NULL
-            same.col.name <- NULL
-            # row and col names remain NULL
-        }else if((is.null(dimnames(data1)) & ! is.null(dimnames(data2))) | ( ! is.null(dimnames(data1)) & is.null(dimnames(data2)))){
-            same.row.name <- FALSE
-            same.col.name <- FALSE
-            # row and col names remain NULL
-        }else{
-            if( ! identical(dimnames(data1)[[1]], dimnames(data2)[[1]])){
-                same.row.name <- FALSE
-                # row names remain NULL
-            }else{
-                same.row.name <- TRUE
-                row.name <- dimnames(data1)[[1]]
-            }
-            # row names
-            any.id.row.name <- FALSE
-            if(any(dimnames(data1)[[1]] %in% dimnames(data2)[[1]])){
-                any.id.row.name <- TRUE
-                same.row.name.pos1 <- which(dimnames(data1)[[1]] %in% dimnames(data2)[[1]])
-            }
-            if(any(dimnames(data2)[[1]] %in% dimnames(data1)[[1]])){
-                any.id.row.name <- TRUE
-                same.row.name.pos2 <- which(dimnames(data2)[[1]] %in% dimnames(data1)[[1]])
-            }
-            if(any.id.row.name == TRUE){
-                common.row.names <- unique(c(dimnames(data1)[[1]][same.row.name.pos1], dimnames(data2)[[1]][same.row.name.pos2]))
-            }
-            # col names
-            any.id.col.name <- FALSE
-            if(any(dimnames(data1)[[2]] %in% dimnames(data2)[[2]])){
-                any.id.col.name <- TRUE
-                same.col.name.pos1 <- which(dimnames(data1)[[2]] %in% dimnames(data2)[[2]])
-            }
-            if(any(dimnames(data2)[[2]] %in% dimnames(data1)[[2]])){
-                any.id.col.name <- TRUE
-                same.col.name.pos2 <- which(dimnames(data2)[[2]] %in% dimnames(data1)[[2]])
-            }
-            if(any.id.col.name == TRUE){
-                common.col.names <- unique(c(dimnames(data1)[[2]][same.col.name.pos1], dimnames(data2)[[2]][same.col.name.pos2]))
-            }
-            if( ! identical(dimnames(data1)[[2]], dimnames(data2)[[2]])){
-                same.col.name <- FALSE
-                # col names remain NULL
-            }else{
-                same.col.name <- TRUE
-                col.name <- dimnames(data1)[[2]]
-            }
-        }
-        # identical row and col content
-        if(all(class(data1) == "table")){
-            as.data.frame(matrix(data1, ncol = ncol(data1)), stringsAsFactors = FALSE)
-        }else if(all(class(data1) == "matrix")){
-            data1 <- as.data.frame(data1, stringsAsFactors = FALSE)
-        }else if(all(class(data1) == "data.frame")){
-            data1 <- data.frame(lapply(data1, as.character), stringsAsFactors=FALSE)
-        }
-        if(all(class(data2) == "table")){
-            as.data.frame(matrix(data2, ncol = ncol(data2)), stringsAsFactors = FALSE)
-        }else if(all(class(data2) == "matrix")){
-            data2 <- as.data.frame(data2, stringsAsFactors = FALSE)
-        }else if(all(class(data2) == "data.frame")){
-            data2 <- data.frame(lapply(data2, as.character), stringsAsFactors=FALSE)
-        }
-        row.names(data1) <- paste0("A", 1:nrow(data1))
-        row.names(data2) <- paste0("A", 1:nrow(data2))
-        if(same.col.nb == TRUE){ # because if not the same col nb, the row cannot be identical
-            same.row.pos1 <- which(c(as.data.frame(t(data1), stringsAsFactors = FALSE)) %in% c(as.data.frame(t(data2), stringsAsFactors = FALSE)))
-            same.row.pos2 <- which(c(as.data.frame(t(data2), stringsAsFactors = FALSE)) %in% c(as.data.frame(t(data1), stringsAsFactors = FALSE)))
-            names(same.row.pos1) <- NULL
-            names(same.row.pos2) <- NULL
-            if(all(is.na(same.row.pos1))){
-                same.row.pos1 <- NULL
-            }else{
-                same.row.pos1 <- same.row.pos1[ ! is.na(same.row.pos1)]
-                any.id.row <- TRUE
-            }
-            if(all(is.na(same.row.pos2))){
-                same.row.pos2 <- NULL
-            }else{
-                same.row.pos2 <- same.row.pos2[ ! is.na(same.row.pos2)]
-                any.id.row <- TRUE
-            }
-            if(is.null(same.row.pos1) & is.null(same.row.pos2)){
-                any.id.row <- FALSE
-            }
-        }else{
-            any.id.row <- FALSE
-            # same.row.pos1 and 2 remain NULL
-        }
-        if(same.row.nb == TRUE){ # because if not the same row nb, the col cannot be identical
-            same.col.pos1 <- which(c(data1) %in% c(data2))
-            same.col.pos2 <- which(c(data2) %in% c(data1))
-            names(same.col.pos1) <- NULL
-            names(same.col.pos2) <- NULL
-            if(all(is.na(same.col.pos1))){
-                same.col.pos1 <- NULL
-            }else{
-                same.col.pos1 <- same.col.pos1[ ! is.na(same.col.pos1)]
-                any.id.col <- TRUE
-            }
-            if(all(is.na(same.col.pos2))){
-                same.col.pos2 <- NULL
-            }else{
-                same.col.pos2 <- same.col.pos2[ ! is.na(same.col.pos2)]
-                any.id.col <- TRUE
-            }
-            if(is.null(same.col.pos1) & is.null(same.col.pos2)){
-                any.id.col <- FALSE
-            }
-        }else{
-            any.id.col <- FALSE
-            # same.col.pos1 and 2 remain NULL
-        }
-        if(same.dim == TRUE & ! all(is.null(same.row.pos1), is.null(same.row.pos2), is.null(same.col.pos1), is.null(same.col.pos2))){ # same.dim == TRUE means that same.row.nb == TRUE and same.col.nb == TRUE, meaning that row.nb != NULL and col.nb != NULL. Thus, no need to include these checkings
-            if(identical(same.row.pos1, 1:row.nb) & identical(same.row.pos2, 1:row.nb) & identical(same.col.pos1, 1:col.nb) & identical(same.col.pos2, 1:col.nb)){
-                identical.content <- TRUE
-            }else{
-                identical.content <- FALSE
-            }
-        }else{
-            identical.content <- FALSE
-        }
-    }
-    output <- list(same.class = same.class, class = class, same.dim = same.dim, dim = dim, same.row.nb = same.row.nb, row.nb = row.nb, same.col.nb = same.col.nb , col.nb = col.nb, same.row.name = same.row.name, row.name = row.name, any.id.row.name = any.id.row.name, same.row.name.pos1 = same.row.name.pos1, same.row.name.pos2 = same.row.name.pos2, common.row.names = common.row.names, same.col.name = same.col.name, col.name = col.name,any.id.col.name = any.id.col.name, same.col.name.pos1 = same.col.name.pos1, same.col.name.pos2 = same.col.name.pos2, common.col.names = common.col.names, any.id.row = any.id.row, same.row.pos1 = same.row.pos1, same.row.pos2 = same.row.pos2, any.id.col = any.id.col, same.col.pos1 = same.col.pos1, same.col.pos2 = same.col.pos2, identical.object = identical.object, identical.content = identical.content)
-    return(output)
+# AIM
+# compare two 2D datasets of the same class or not. Check and report in a list if the 2 datasets have:
+# same class
+# common row names
+# common column names
+# same row number
+# same column number
+# potential identical rows between the 2 datasets
+# potential identical columns between the 2 datasets
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data1: matrix, data frame or table
+# data2: matrix, data frame or table
+# RETURN
+# a list containing:
+# $same.class: logical. Are class identical ?
+# $class: classes of the 2 datasets (NULL otherwise)
+# $same.dim: logical. Are dimension identical ?
+# $dim: dimension of the 2 datasets (NULL otherwise)
+# $same.row.nb: logical. Are number of rows identical ?
+# $row.nb: nb of rows of the 2 datasets if identical (NULL otherwise)
+# $same.col.nb: logical. Are number of columns identical ?
+# $col.nb: nb of columns of the 2 datasets if identical (NULL otherwise)
+# $same.row.name: logical. Are row names identical ? NULL if no row names in the two 2D datasets
+# $row.name: name of rows of the 2 datasets if identical (NULL otherwise)
+# $any.id.row.name: logical. Is there any row names identical ? NULL if no row names in the two 2D datasets
+# $same.row.name.pos1: position, in data1, of the row names identical in data2
+# $same.row.name.pos2: position, in data2, of the row names identical in data1
+# $common.row.names: common row names between data1 and data2 (can be a subset of $name or not). NULL if no common row names
+# $same.col.name: logical. Are column names identical ? NULL if no col names in the two 2D datasets
+# $col.name: name of columns of the 2 datasets if identical (NULL otherwise)
+# $any.id.col.name: logical. Is there any column names identical ? NULL if no col names in the two 2D datasets
+# $same.col.name.pos1: position, in data1, of the column names identical in data2
+# $same.col.name.pos2: position, in data2, of the column names identical in data1
+# $common.col.names: common column names between data1 and data2 (can be a subset of $name or not). NULL if no common column names
+# $any.id.row: logical. is there identical rows (not considering row names) ?
+# $same.row.pos1: position, in data1, of the rows identical in data2 (not considering row names)
+# $same.row.pos2: position, in data2, of the rows identical in data1 (not considering row names)
+# $any.id.col: logical. is there identical columns (not considering column names)?
+# $same.col.pos1: position in data1 of the cols identical in data2 (not considering column names)
+# $same.col.pos2: position in data2 of the cols identical in data1 (not considering column names)
+# $identical.object: logical. Are objects identical (including row & column names)?
+# $identical.content: logical. Are content objects identical (identical excluding row & column names)?
+# EXAMPLES
+# obs1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
+# obs1 = matrix(101:110, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
+# obs1 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
+# obs1 = t(matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs2 = t(matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4])))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
+# DEBUGGING
+# data1 = matrix(1:10, ncol = 5) ; data2 = matrix(1:10, ncol = 5) # for function debugging
+# data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5) # for function debugging
+# data1 = matrix(1:15, byrow = TRUE, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# data1 = matrix(1:15, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# data1 = matrix(1:15, ncol = 5, dimnames = list(paste0("A", letters[1:3]), LETTERS[1:5])) ; data2 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# data1 = matrix(1:15, ncol = 5, dimnames = list(letters[1:3], LETTERS[1:5])) ; data2 = matrix(1:12, ncol = 4, dimnames = list(letters[1:3], LETTERS[1:4])) # for function debugging
+# data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(101:110, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# data1 = data.frame(a = 1:3, b= letters[1:3], row.names = LETTERS[1:3]) ; data2 = data.frame(A = 1:3, B= letters[1:3]) # for function debugging
+# data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) # for function debugging
+# data1 = matrix(1:10, byrow = TRUE, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; data2 = matrix(c(1:5, 101:105, 6:10), byrow = TRUE, ncol = 5, dimnames = list(c("a", "z", "b"), c(LETTERS[1:2], "k", LETTERS[5:4]))) # for function debugging
+# data1 = table(Exp1 = c("A", "A", "A", "B", "B", "B"), Exp2 = c("A1", "B1", "A1", "C1", "C1", "B1")) ; data2 = data.frame(A = 1:3, B= letters[1:3]) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# argument checking
+if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! any(class(data2) %in% c("matrix", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
+# end argument checking
+# main code
+same.class <- NULL
+class <- NULL
+same.dim <- NULL
+dim <- NULL
+same.row.nb <- NULL
+row.nb <- NULL
+same.col.nb <- NULL
+col.nb <- NULL
+same.row.name <- NULL
+row.name <- NULL
+any.id.row.name <- NULL
+same.row.name.pos1 <- NULL
+same.row.name.pos2 <- NULL
+common.row.names <- NULL
+same.col.name <- NULL
+any.id.col.name <- NULL
+same.col.name.pos1 <- NULL
+same.col.name.pos2 <- NULL
+common.col.names <- NULL
+col.name <- NULL
+any.id.row <- NULL
+same.row.pos1 <- NULL
+same.row.pos2 <- NULL
+any.id.col <- NULL
+same.col.pos1 <- NULL
+same.col.pos2 <- NULL
+identical.object <- NULL
+identical.content <- NULL
+if(identical(data1, data2) & any(class(data1) %in% c("matrix", "data.frame", "table"))){
+same.class <- TRUE
+class <- class(data1)
+same.dim <- TRUE
+dim <- dim(data1)
+same.row.nb <- TRUE
+row.nb <- nrow(data1)
+same.col.nb <- TRUE
+col.nb <- ncol(data1)
+same.row.name <- TRUE
+row.name <- dimnames(data1)[[1]]
+any.id.row.name <- TRUE
+same.row.name.pos1 <- 1:row.nb
+same.row.name.pos2 <- 1:row.nb
+common.row.names <- dimnames(data1)[[1]]
+same.col.name <- TRUE
+col.name <- dimnames(data1)[[2]]
+any.id.col.name <- TRUE
+same.col.name.pos1 <- 1:col.nb
+same.col.name.pos2 <- 1:col.nb
+common.col.names <- dimnames(data1)[[2]]
+any.id.row <- TRUE
+same.row.pos1 <- 1:row.nb
+same.row.pos2 <- 1:row.nb
+any.id.col <- TRUE
+same.col.pos1 <- 1:col.nb
+same.col.pos2 <- 1:col.nb
+identical.object <- TRUE
+identical.content <- TRUE
+}else{
+identical.object <- FALSE
+if(all(class(data1) == "table") & length(dim(data1)) == 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT IS A 1D TABLE. USE THE info_1D_dataset_fun FUNCTION\n\n================\n\n")
+stop(tempo.cat)
+}
+if(all(class(data2) == "table") & length(dim(data2)) == 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT IS A 1D TABLE. USE THE info_1D_dataset_fun FUNCTION\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! identical(class(data1), class(data2))){
+same.class <- FALSE
+}else if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 AND data2 ARGUMENTS MUST BE EITHER MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
+stop(tempo.cat)
+}else{
+same.class <- TRUE
+class <- class(data1)
+}
+if( ! identical(dim(data1), dim(data2))){
+same.dim <- FALSE
+}else{
+same.dim <- TRUE
+dim <- dim(data1)
+}
+if( ! identical(nrow(data1), nrow(data2))){
+same.row.nb <- FALSE
+}else{
+same.row.nb <- TRUE
+row.nb <- nrow(data1)
+}
+if( ! identical(ncol(data1), ncol(data2))){
+same.col.nb <- FALSE
+}else{
+same.col.nb <- TRUE
+col.nb <- ncol(data1)
+}
+# row and col names
+if(is.null(dimnames(data1)) & is.null(dimnames(data2))){
+same.row.name <- NULL
+same.col.name <- NULL
+# row and col names remain NULL
+}else if((is.null(dimnames(data1)) & ! is.null(dimnames(data2))) | ( ! is.null(dimnames(data1)) & is.null(dimnames(data2)))){
+same.row.name <- FALSE
+same.col.name <- FALSE
+# row and col names remain NULL
+}else{
+if( ! identical(dimnames(data1)[[1]], dimnames(data2)[[1]])){
+same.row.name <- FALSE
+# row names remain NULL
+}else{
+same.row.name <- TRUE
+row.name <- dimnames(data1)[[1]]
+}
+# row names
+any.id.row.name <- FALSE
+if(any(dimnames(data1)[[1]] %in% dimnames(data2)[[1]])){
+any.id.row.name <- TRUE
+same.row.name.pos1 <- which(dimnames(data1)[[1]] %in% dimnames(data2)[[1]])
+}
+if(any(dimnames(data2)[[1]] %in% dimnames(data1)[[1]])){
+any.id.row.name <- TRUE
+same.row.name.pos2 <- which(dimnames(data2)[[1]] %in% dimnames(data1)[[1]])
+}
+if(any.id.row.name == TRUE){
+common.row.names <- unique(c(dimnames(data1)[[1]][same.row.name.pos1], dimnames(data2)[[1]][same.row.name.pos2]))
+}
+# col names
+any.id.col.name <- FALSE
+if(any(dimnames(data1)[[2]] %in% dimnames(data2)[[2]])){
+any.id.col.name <- TRUE
+same.col.name.pos1 <- which(dimnames(data1)[[2]] %in% dimnames(data2)[[2]])
+}
+if(any(dimnames(data2)[[2]] %in% dimnames(data1)[[2]])){
+any.id.col.name <- TRUE
+same.col.name.pos2 <- which(dimnames(data2)[[2]] %in% dimnames(data1)[[2]])
+}
+if(any.id.col.name == TRUE){
+common.col.names <- unique(c(dimnames(data1)[[2]][same.col.name.pos1], dimnames(data2)[[2]][same.col.name.pos2]))
+}
+if( ! identical(dimnames(data1)[[2]], dimnames(data2)[[2]])){
+same.col.name <- FALSE
+# col names remain NULL
+}else{
+same.col.name <- TRUE
+col.name <- dimnames(data1)[[2]]
+}
+}
+# identical row and col content
+if(all(class(data1) == "table")){
+as.data.frame(matrix(data1, ncol = ncol(data1)), stringsAsFactors = FALSE)
+}else if(all(class(data1) == "matrix")){
+data1 <- as.data.frame(data1, stringsAsFactors = FALSE)
+}else if(all(class(data1) == "data.frame")){
+data1 <- data.frame(lapply(data1, as.character), stringsAsFactors=FALSE)
+}
+if(all(class(data2) == "table")){
+as.data.frame(matrix(data2, ncol = ncol(data2)), stringsAsFactors = FALSE)
+}else if(all(class(data2) == "matrix")){
+data2 <- as.data.frame(data2, stringsAsFactors = FALSE)
+}else if(all(class(data2) == "data.frame")){
+data2 <- data.frame(lapply(data2, as.character), stringsAsFactors=FALSE)
+}
+row.names(data1) <- paste0("A", 1:nrow(data1))
+row.names(data2) <- paste0("A", 1:nrow(data2))
+if(same.col.nb == TRUE){ # because if not the same col nb, the row cannot be identical
+same.row.pos1 <- which(c(as.data.frame(t(data1), stringsAsFactors = FALSE)) %in% c(as.data.frame(t(data2), stringsAsFactors = FALSE)))
+same.row.pos2 <- which(c(as.data.frame(t(data2), stringsAsFactors = FALSE)) %in% c(as.data.frame(t(data1), stringsAsFactors = FALSE)))
+names(same.row.pos1) <- NULL
+names(same.row.pos2) <- NULL
+if(all(is.na(same.row.pos1))){
+same.row.pos1 <- NULL
+}else{
+same.row.pos1 <- same.row.pos1[ ! is.na(same.row.pos1)]
+any.id.row <- TRUE
+}
+if(all(is.na(same.row.pos2))){
+same.row.pos2 <- NULL
+}else{
+same.row.pos2 <- same.row.pos2[ ! is.na(same.row.pos2)]
+any.id.row <- TRUE
+}
+if(is.null(same.row.pos1) & is.null(same.row.pos2)){
+any.id.row <- FALSE
+}
+}else{
+any.id.row <- FALSE
+# same.row.pos1 and 2 remain NULL
+}
+if(same.row.nb == TRUE){ # because if not the same row nb, the col cannot be identical
+same.col.pos1 <- which(c(data1) %in% c(data2))
+same.col.pos2 <- which(c(data2) %in% c(data1))
+names(same.col.pos1) <- NULL
+names(same.col.pos2) <- NULL
+if(all(is.na(same.col.pos1))){
+same.col.pos1 <- NULL
+}else{
+same.col.pos1 <- same.col.pos1[ ! is.na(same.col.pos1)]
+any.id.col <- TRUE
+}
+if(all(is.na(same.col.pos2))){
+same.col.pos2 <- NULL
+}else{
+same.col.pos2 <- same.col.pos2[ ! is.na(same.col.pos2)]
+any.id.col <- TRUE
+}
+if(is.null(same.col.pos1) & is.null(same.col.pos2)){
+any.id.col <- FALSE
+}
+}else{
+any.id.col <- FALSE
+# same.col.pos1 and 2 remain NULL
+}
+if(same.dim == TRUE & ! all(is.null(same.row.pos1), is.null(same.row.pos2), is.null(same.col.pos1), is.null(same.col.pos2))){ # same.dim == TRUE means that same.row.nb == TRUE and same.col.nb == TRUE, meaning that row.nb != NULL and col.nb != NULL. Thus, no need to include these checkings
+if(identical(same.row.pos1, 1:row.nb) & identical(same.row.pos2, 1:row.nb) & identical(same.col.pos1, 1:col.nb) & identical(same.col.pos2, 1:col.nb)){
+identical.content <- TRUE
+}else{
+identical.content <- FALSE
+}
+}else{
+identical.content <- FALSE
+}
+}
+output <- list(same.class = same.class, class = class, same.dim = same.dim, dim = dim, same.row.nb = same.row.nb, row.nb = row.nb, same.col.nb = same.col.nb , col.nb = col.nb, same.row.name = same.row.name, row.name = row.name, any.id.row.name = any.id.row.name, same.row.name.pos1 = same.row.name.pos1, same.row.name.pos2 = same.row.name.pos2, common.row.names = common.row.names, same.col.name = same.col.name, col.name = col.name,any.id.col.name = any.id.col.name, same.col.name.pos1 = same.col.name.pos1, same.col.name.pos2 = same.col.name.pos2, common.col.names = common.col.names, any.id.row = any.id.row, same.row.pos1 = same.row.pos1, same.row.pos2 = same.row.pos2, any.id.col = any.id.col, same.col.pos1 = same.col.pos1, same.col.pos2 = same.col.pos2, identical.object = identical.object, identical.content = identical.content)
+return(output)
 }
 
 
@@ -953,60 +958,60 @@ fun_2d_comp <- function(data1, data2){
 
 # Check OK: clear to go Apollo
 fun_2d_head <- function(data1, n = 10, side = "l"){
-    # AIM
-    # display the head of the left or right of big 2D objects
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data1: matrix, data frame or table
-    # n: number of dimension to print (10 means 10 rows and columns)
-    # side: either "l" or "r" for the left or right side of the 2D object
-    # RETURN
-    # the head
-    # EXAMPLES
-    # obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_head(obs1, 3)
-    # obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_head(obs1, 3, "right")
-    # DEBUGGING
-    # data1 = matrix(1:30, ncol = 5) # for function debugging
-    # data1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = side, options = c("l", "r"), length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    obs.dim <- dim(data1)
-    row <- 1:ifelse(obs.dim[1] < n, obs.dim[1], n)
-    if(side == "l"){
-        col <- 1:ifelse(obs.dim[2] < n, obs.dim[2], n)
-    }
-    if(side == "r"){
-        col <- ifelse(obs.dim[2] < n, 1, obs.dim[2] - n + 1):obs.dim[2]
-    }
-    return(data1[row, col])
+# AIM
+# display the head of the left or right of big 2D objects
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data1: matrix, data frame or table
+# n: number of dimension to print (10 means 10 rows and columns)
+# side: either "l" or "r" for the left or right side of the 2D object
+# RETURN
+# the head
+# EXAMPLES
+# obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_head(obs1, 3)
+# obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_head(obs1, 3, "right")
+# DEBUGGING
+# data1 = matrix(1:30, ncol = 5) # for function debugging
+# data1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = side, options = c("l", "r"), length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+obs.dim <- dim(data1)
+row <- 1:ifelse(obs.dim[1] < n, obs.dim[1], n)
+if(side == "l"){
+col <- 1:ifelse(obs.dim[2] < n, obs.dim[2], n)
+}
+if(side == "r"){
+col <- ifelse(obs.dim[2] < n, 1, obs.dim[2] - n + 1):obs.dim[2]
+}
+return(data1[row, col])
 }
 
 
@@ -1015,60 +1020,60 @@ fun_2d_head <- function(data1, n = 10, side = "l"){
 
 # Check OK: clear to go Apollo
 fun_2d_tail <- function(data1, n = 10, side = "l"){
-    # AIM
-    # display the tail of the left or right of big 2D objects
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data1: matrix, data frame or table
-    # n: number of dimension to print (10 means 10 rows and columns)
-    # side: either "l" or "r" for the left or right side of the 2D object
-    # RETURN
-    # the tail
-    # EXAMPLES
-    # obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_tail(obs1, 3)
-    # obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_tail(obs1, 3, "r")
-    # DEBUGGING
-    # data1 = matrix(1:10, ncol = 5) # for function debugging
-    # data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = side, options = c("l", "r"), length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    obs.dim <- dim(data1)
-    row <- ifelse(obs.dim[1] < n, 1, obs.dim[1] - n + 1):obs.dim[1]
-    if(side == "l"){
-        col <- 1:ifelse(obs.dim[2] < n, obs.dim[2], n)
-    }
-    if(side == "r"){
-        col <- ifelse(obs.dim[2] < n, 1, obs.dim[2] - n + 1):obs.dim[2]
-    }
-    return(data1[row, col])
+# AIM
+# display the tail of the left or right of big 2D objects
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data1: matrix, data frame or table
+# n: number of dimension to print (10 means 10 rows and columns)
+# side: either "l" or "r" for the left or right side of the 2D object
+# RETURN
+# the tail
+# EXAMPLES
+# obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_tail(obs1, 3)
+# obs1 = matrix(1:30, ncol = 5, dimnames = list(letters[1:6], LETTERS[1:5])) ; obs1 ; fun_2d_tail(obs1, 3, "r")
+# DEBUGGING
+# data1 = matrix(1:10, ncol = 5) # for function debugging
+# data1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = side, options = c("l", "r"), length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+obs.dim <- dim(data1)
+row <- ifelse(obs.dim[1] < n, 1, obs.dim[1] - n + 1):obs.dim[1]
+if(side == "l"){
+col <- 1:ifelse(obs.dim[2] < n, obs.dim[2], n)
+}
+if(side == "r"){
+col <- ifelse(obs.dim[2] < n, 1, obs.dim[2] - n + 1):obs.dim[2]
+}
+return(data1[row, col])
 }
 
 
@@ -1077,128 +1082,128 @@ fun_2d_tail <- function(data1, n = 10, side = "l"){
 
 # Check OK: clear to go Apollo
 fun_list_comp <- function(data1, data2){
-    # AIM
-    # compare two lists. Check and report in a list if the 2 datasets have:
-    # same length
-    # common names
-    # common compartments
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # none
-    # ARGUMENTS
-    # data1: list
-    # data2: list
-    # RETURN
-    # a list containing:
-    # $same.length: logical. Are number of elements identical?
-    # $length: number of elements in the 2 datasets (NULL otherwise)
-    # $same.name: logical. Are element names identical ?
-    # $name: name of elements of the 2 datasets if identical (NULL otherwise)
-    # $any.id.name: logical. Is there any element names identical ?
-    # $same.name.pos1: position, in data1, of the element names identical in data2
-    # $same.name.pos2: position, in data2, of the compartment names identical in data1
-    # $any.id.compartment: logical. is there any identical compartments ?
-    # $same.compartment.pos1: position, in data1, of the compartments identical in data2
-    # $same.compartment.pos2: position, in data2, of the compartments identical in data1
-    # $identical.object: logical. Are objects identical (kind of object, compartment names and content)?
-    # $identical.content: logical. Are content objects identical (identical compartments excluding compartment names)?
-    # EXAMPLES
-    # obs1 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; obs2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; fun_list_comp(obs1, obs2)
-    # obs1 = list(1:5, LETTERS[1:2]) ; obs2 = list(a = 1:5, b = LETTERS[1:2]) ; fun_list_comp(obs1, obs2)
-    # obs1 = list(b = 1:5, c = LETTERS[1:2]) ; obs2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; fun_list_comp(obs1, obs2)
-    # obs1 = list(b = 1:5, c = LETTERS[1:2]) ; obs2 = list(LETTERS[5:9], matrix(1:6), 1:5) ; fun_list_comp(obs1, obs2)
-    # DEBUGGING
-    # data1 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; data2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) # for function debugging
-    # data1 = list(a = 1:5, b = LETTERS[1:2]) ; data2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # argument checking
-    if( ! any(class(data1) %in% "list")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A LIST\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! any(class(data2) %in% "list")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A LIST\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
-    # end argument checking
-    # main code
-    same.length <- NULL
-    length <- NULL
-    same.name <- NULL
-    name <- NULL
-    any.id.name <- NULL
-    same.name.pos1 <- NULL
-    same.name.pos2 <- NULL
-    any.id.compartment <- NULL
-    same.compartment.pos1 <- NULL
-    same.compartment.pos2 <- NULL
-    identical.object <- NULL
-    identical.content <- NULL
-    if(identical(data1, data2)){
-        same.length <- TRUE
-        length <- length(data1)
-        if( ! is.null(names(data1))){
-            same.name <- TRUE
-            name <- names(data1)
-            any.id.name <- TRUE
-            same.name.pos1 <- 1:length(data1)
-            same.name.pos2 <- 1:length(data2)
-        }
-        any.id.compartment <- TRUE
-        same.compartment.pos1 <- 1:length(data1)
-        same.compartment.pos2 <- 1:length(data2)
-        identical.object <- TRUE
-        identical.content <- TRUE
-    }else{
-        identical.object <- FALSE
-        if( ! identical(length(data1), length(data2))){
-            same.length<- FALSE
-        }else{
-            same.length<- TRUE
-            length <- length(data1)
-        }
-        if( ! (is.null(names(data1)) & is.null(names(data2)))){
-            if( ! identical(names(data1), names(data2))){
-                same.name <- FALSE
-            }else{
-                same.name <- TRUE
-                name <- names(data1)
-            }
-            any.id.name <- FALSE
-            if(any(names(data1) %in% names(data2))){
-                any.id.name <- TRUE
-                same.name.pos1 <- which(names(data1) %in% names(data2))
-            }
-            if(any(names(data2) %in% names(data1))){
-                any.id.name <- TRUE
-                same.name.pos2 <- which(names(data2) %in% names(data1))
-            }
-        }
-        names(data1) <- NULL
-        names(data2) <- NULL
-        any.id.compartment <- FALSE
-        if(any(data1 %in% data2)){
-            any.id.compartment <- TRUE
-            same.compartment.pos1 <- which(data1 %in% data2)
-        }
-        if(any(data2 %in% data1)){
-            any.id.compartment <- TRUE
-            same.compartment.pos2 <- which(data2 %in% data1)
-        }
-        if(same.length == TRUE & ! all(is.null(same.compartment.pos1), is.null(same.compartment.pos2))){
-            if(identical(same.compartment.pos1, same.compartment.pos2)){
-                identical.content <- TRUE
-            }else{
-                identical.content <- FALSE
-            }
-        }else{
-            identical.content <- FALSE
-        }
-    }
-    output <- list(same.length = same.length, length = length, same.name = same.name, name = name, any.id.name = any.id.name, same.name.pos1 = same.name.pos1, same.name.pos2 = same.name.pos2, any.id.compartment = any.id.compartment, same.compartment.pos1 = same.compartment.pos1, same.compartment.pos2 = same.compartment.pos2, identical.object = identical.object, identical.content = identical.content)
-    return(output)
+# AIM
+# compare two lists. Check and report in a list if the 2 datasets have:
+# same length
+# common names
+# common compartments
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data1: list
+# data2: list
+# RETURN
+# a list containing:
+# $same.length: logical. Are number of elements identical?
+# $length: number of elements in the 2 datasets (NULL otherwise)
+# $same.name: logical. Are element names identical ?
+# $name: name of elements of the 2 datasets if identical (NULL otherwise)
+# $any.id.name: logical. Is there any element names identical ?
+# $same.name.pos1: position, in data1, of the element names identical in data2
+# $same.name.pos2: position, in data2, of the compartment names identical in data1
+# $any.id.compartment: logical. is there any identical compartments ?
+# $same.compartment.pos1: position, in data1, of the compartments identical in data2
+# $same.compartment.pos2: position, in data2, of the compartments identical in data1
+# $identical.object: logical. Are objects identical (kind of object, compartment names and content)?
+# $identical.content: logical. Are content objects identical (identical compartments excluding compartment names)?
+# EXAMPLES
+# obs1 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; obs2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; fun_list_comp(obs1, obs2)
+# obs1 = list(1:5, LETTERS[1:2]) ; obs2 = list(a = 1:5, b = LETTERS[1:2]) ; fun_list_comp(obs1, obs2)
+# obs1 = list(b = 1:5, c = LETTERS[1:2]) ; obs2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; fun_list_comp(obs1, obs2)
+# obs1 = list(b = 1:5, c = LETTERS[1:2]) ; obs2 = list(LETTERS[5:9], matrix(1:6), 1:5) ; fun_list_comp(obs1, obs2)
+# DEBUGGING
+# data1 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) ; data2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) # for function debugging
+# data1 = list(a = 1:5, b = LETTERS[1:2]) ; data2 = list(a = 1:5, b = LETTERS[1:2], d = matrix(1:6)) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# argument checking
+if( ! any(class(data1) %in% "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! any(class(data2) %in% "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) # activate this line and use the function to check arguments status
+# end argument checking
+# main code
+same.length <- NULL
+length <- NULL
+same.name <- NULL
+name <- NULL
+any.id.name <- NULL
+same.name.pos1 <- NULL
+same.name.pos2 <- NULL
+any.id.compartment <- NULL
+same.compartment.pos1 <- NULL
+same.compartment.pos2 <- NULL
+identical.object <- NULL
+identical.content <- NULL
+if(identical(data1, data2)){
+same.length <- TRUE
+length <- length(data1)
+if( ! is.null(names(data1))){
+same.name <- TRUE
+name <- names(data1)
+any.id.name <- TRUE
+same.name.pos1 <- 1:length(data1)
+same.name.pos2 <- 1:length(data2)
+}
+any.id.compartment <- TRUE
+same.compartment.pos1 <- 1:length(data1)
+same.compartment.pos2 <- 1:length(data2)
+identical.object <- TRUE
+identical.content <- TRUE
+}else{
+identical.object <- FALSE
+if( ! identical(length(data1), length(data2))){
+same.length<- FALSE
+}else{
+same.length<- TRUE
+length <- length(data1)
+}
+if( ! (is.null(names(data1)) & is.null(names(data2)))){
+if( ! identical(names(data1), names(data2))){
+same.name <- FALSE
+}else{
+same.name <- TRUE
+name <- names(data1)
+}
+any.id.name <- FALSE
+if(any(names(data1) %in% names(data2))){
+any.id.name <- TRUE
+same.name.pos1 <- which(names(data1) %in% names(data2))
+}
+if(any(names(data2) %in% names(data1))){
+any.id.name <- TRUE
+same.name.pos2 <- which(names(data2) %in% names(data1))
+}
+}
+names(data1) <- NULL
+names(data2) <- NULL
+any.id.compartment <- FALSE
+if(any(data1 %in% data2)){
+any.id.compartment <- TRUE
+same.compartment.pos1 <- which(data1 %in% data2)
+}
+if(any(data2 %in% data1)){
+any.id.compartment <- TRUE
+same.compartment.pos2 <- which(data2 %in% data1)
+}
+if(same.length == TRUE & ! all(is.null(same.compartment.pos1), is.null(same.compartment.pos2))){
+if(identical(same.compartment.pos1, same.compartment.pos2)){
+identical.content <- TRUE
+}else{
+identical.content <- FALSE
+}
+}else{
+identical.content <- FALSE
+}
+}
+output <- list(same.length = same.length, length = length, same.name = same.name, name = name, any.id.name = any.id.name, same.name.pos1 = same.name.pos1, same.name.pos2 = same.name.pos2, any.id.compartment = any.id.compartment, same.compartment.pos1 = same.compartment.pos1, same.compartment.pos2 = same.compartment.pos2, identical.object = identical.object, identical.content = identical.content)
+return(output)
 }
 
 
@@ -1210,71 +1215,71 @@ fun_list_comp <- function(data1, data2){
 
 # Check OK: clear to go Apollo
 fun_name_change <- function(data1, data2, added.string = "_modif"){
-    # AIM
-    # this function allow to check if a vector of character strings, like column names of a data frame, has elements present in another vector (vector of reserved words or column names of another data frame before merging)
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data1: vector of character strings to check and modify
-    # data2: reference vector of character strings
-    # added.string: string added at the end of the modified string in data1 if present in data2
-    # RETURN
-    # a list containing
-    # $data: the modified or unmodified data1 (in the same order as in the initial data1)
-    # $ini: the initial elements before modification. NULL if no modification
-    # $post: the modified elements in the same order as in ini. NULL if no modification
-    # EXAMPLES
-    # obs1 <- c("A", "B", "C", "D") ; obs2 <- c("A", "C") ; fun_name_change(obs1, obs2)
-    # obs1 <- c("A", "B", "C", "C_modif1", "D") ; obs2 <- c("A", "A_modif1", "C") ; fun_name_change(obs1, obs2) # the function checks that the new names are neither in obs1 nor in obs2 (increment the number after the added string)
-    # DEBUGGING
-    # data1 = c("A", "B", "C", "D") ; data2 <- c("A", "C") ; added.string = "_modif" # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data1, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = data2, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = added.string, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    ini <- NULL
-    post <- NULL
-    if(any(data1 %in% data2)){
-        tempo.names <- data1[data1 %in% data2]
-        ini <- NULL
-        post <- NULL
-        for(i3 in 1:length(tempo.names)){
-            count <- 0
-            tempo <- tempo.names[i3]
-            while(any(tempo %in% data2) | any(tempo %in% data1)){
-                count <- count + 1
-                tempo <- paste0(tempo.names[i3], "_modif", count)
-            }
-            data1[data1 %in% tempo.names[i3]] <- paste0(tempo.names[i3], "_modif", count)
-            if(count != 0){
-                ini <- c(ini, tempo.names[i3])
-                post <- c(post, paste0(tempo.names[i3], "_modif", count))
-            }
-        }
-        data <- data1
-    }else{
-        data <- data1
-    }
-    output <- list(data = data, ini = ini, post = post)
-    return(output)
+# AIM
+# this function allow to check if a vector of character strings, like column names of a data frame, has elements present in another vector (vector of reserved words or column names of another data frame before merging)
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data1: vector of character strings to check and modify
+# data2: reference vector of character strings
+# added.string: string added at the end of the modified string in data1 if present in data2
+# RETURN
+# a list containing
+# $data: the modified or unmodified data1 (in the same order as in the initial data1)
+# $ini: the initial elements before modification. NULL if no modification
+# $post: the modified elements in the same order as in ini. NULL if no modification
+# EXAMPLES
+# obs1 <- c("A", "B", "C", "D") ; obs2 <- c("A", "C") ; fun_name_change(obs1, obs2)
+# obs1 <- c("A", "B", "C", "C_modif1", "D") ; obs2 <- c("A", "A_modif1", "C") ; fun_name_change(obs1, obs2) # the function checks that the new names are neither in obs1 nor in obs2 (increment the number after the added string)
+# DEBUGGING
+# data1 = c("A", "B", "C", "D") ; data2 <- c("A", "C") ; added.string = "_modif" # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data1, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = data2, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = added.string, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+ini <- NULL
+post <- NULL
+if(any(data1 %in% data2)){
+tempo.names <- data1[data1 %in% data2]
+ini <- NULL
+post <- NULL
+for(i3 in 1:length(tempo.names)){
+count <- 0
+tempo <- tempo.names[i3]
+while(any(tempo %in% data2) | any(tempo %in% data1)){
+count <- count + 1
+tempo <- paste0(tempo.names[i3], "_modif", count)
+}
+data1[data1 %in% tempo.names[i3]] <- paste0(tempo.names[i3], "_modif", count)
+if(count != 0){
+ini <- c(ini, tempo.names[i3])
+post <- c(post, paste0(tempo.names[i3], "_modif", count))
+}
+}
+data <- data1
+}else{
+data <- data1
+}
+output <- list(data = data, ini = ini, post = post)
+return(output)
 }
 
 
@@ -1283,116 +1288,116 @@ fun_name_change <- function(data1, data2, added.string = "_modif"){
 
 # Check OK: clear to go Apollo
 fun_df_remod <- function(data, quanti.col.name = "quanti", quali.col.name = "quali"){
-    # AIM
-    # if the data frame is made of numeric columns, a new data frame is created, with the 1st column gathering all the numeric values, and the 2nd column being the name of the columns of the initial data frame. If row names were present in the initial data frame, then a new ini_rowname column is added with the names of the rows
-    
-    
-    # If the data frame is made of one numeric column and one character or factor column, a new data frame is created, with the new columns corresponding to the split numeric values (according to the character column). NA are added a the end of each column to have the same number of rows. BEWARE: in such data frame, rows are not individuals. This means that in the example below, values 10 and 20 are associated on the same row but that means nothing in term of association
-    
-    
-    
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data: data frame to convert
-    # quanti.col.name: optional name for the quanti column of the new data frame
-    # quali.col.name: optional name for the quali column of the new data frame
-    # RETURN
-    # the modified data frame
-    # EXAMPLES
-    # obs <- data.frame(col1 = (1:4)*10, col2 = c("A", "B", "A", "A")) ; obs ; fun_df_remod(obs)
-    # obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; obs ; fun_df_remod(obs, quanti.col.name = "quanti", quali.col.name = "quali")
-    # obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; rownames(obs) <- paste0("row", 1:4) ; obs ; fun_df_remod(obs, quanti.col.name = "quanti", quali.col.name = "quali")
-    # DEBUGGING
-    # data = data.frame(a = 1:3, b = 4:6) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
-    # data = data.frame(a = 1:3, b = 4:6, c = 11:13) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
-    # data = data.frame(a = 1:3, b = letters[1:3]) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
-    # data = data.frame(a = 1:3, b = letters[1:3]) ; quanti.col.name = "TEST" ; quali.col.name = "quali" # for function debugging
-    # data = data.frame(b = letters[1:3], a = 1:3) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
-    # data = data.frame(b = c("e", "e", "h"), a = 1:3) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if( ! any(class(data) %in% "data.frame")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data ARGUMENT MUST BE A DATA FRAME\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = quanti.col.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = quali.col.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    tempo.factor <- unlist(lapply(data, class))
-    for(i in 1:length(tempo.factor)){ # convert factor columns as character
-        if(all(tempo.factor[i] == "factor")){
-            data[, i] <- as.character(data[, i])
-        }
-    }
-    tempo.factor <- unlist(lapply(data, mode))
-    if(length(data) == 2){
-        if( ! ((mode(data[, 1]) == "character" & mode(data[, 2]) == "numeric") | mode(data[, 2]) == "character" & mode(data[, 1]) == "numeric" | mode(data[, 2]) == "numeric" & mode(data[, 1]) == "numeric") ){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IF data ARGUMENT IS A DATA FRAME MADE OF 2 COLUMNS, EITHER A COLUMN MUST BE NUMERIC AND THE OTHER CHARACTER, OR THE TWO COLUMNS MUST BE NUMERIC\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if((mode(data[, 1]) == "character" | mode(data[, 2]) == "character") & (quanti.col.name != "quanti" | quali.col.name != "quali")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IMPROPER quanti.col.name OR quali.col.name RESETTINGS. THESE ARGUMENTS ARE RESERVED FOR DATA FRAMES MADE OF n NUMERIC COLUMNS ONLY\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }else{
-        if( ! all(tempo.factor %in% "numeric")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IF data ARGUMENT IS A DATA FRAME MADE OF ONE COLUMN, OR MORE THAN 2 COLUMNS, THESE COLUMNS MUST BE NUMERIC\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if(( ! any(tempo.factor %in% "character")) & is.null(names(data))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": NUMERIC DATA FRAME in the data ARGUMENT MUST HAVE COLUMN NAMES\n\n================\n\n")
-        stop()
-    }
-    if(all(tempo.factor %in% "numeric")){ # transfo 1
-        quanti <- NULL
-        for(i in 1:length(data)){
-            quanti <-c(quanti, data[, i])
-        }
-        quali <- rep(names(data), each = nrow(data))
-        output.data <- data.frame(quanti, quali)
-        names(output.data) <- c(quanti.col.name, quali.col.name)
-        # add the ini_rowname column
-        ini.rownames <- rownames(data)
-        tempo.data <- data
-        rownames(tempo.data) <- NULL
-        null.rownames <- (tempo.data)
-        if( ! identical(ini.rownames, null.rownames)){
-            ini_rowname <- rep(ini.rownames, times = ncol(data))
-            output.data <- cbind(output.data, ini_rowname)
-        }
-    }else{ # transfo 2
-        if(class(data[, 1]) == "character"){
-            data <- cbind(data[2], data[1])
-        }
-        nc.max <- max(table(data[, 2])) # effectif maximum des classes
-        nb.na <- nc.max - table(data[,2]) # nombre de NA à ajouter pour réaliser la data frame
-        tempo<-split(data[, 1], data[, 2])
-        for(i in 1:length(tempo)){tempo[[i]] <- append(tempo[[i]], rep(NA, nb.na[i]))} # des NA doivent être ajoutés lorsque les effectifs sont différents entre les classes. C'est uniquement pour que chaque colonne ait le même nombre de lignes
-        output.data<-data.frame(tempo)
-    }
-    return(output.data)
+# AIM
+# if the data frame is made of numeric columns, a new data frame is created, with the 1st column gathering all the numeric values, and the 2nd column being the name of the columns of the initial data frame. If row names were present in the initial data frame, then a new ini_rowname column is added with the names of the rows
+
+ 
+# If the data frame is made of one numeric column and one character or factor column, a new data frame is created, with the new columns corresponding to the split numeric values (according to the character column). NA are added a the end of each column to have the same number of rows. BEWARE: in such data frame, rows are not individuals. This means that in the example below, values 10 and 20 are associated on the same row but that means nothing in term of association
+
+ 
+
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data: data frame to convert
+# quanti.col.name: optional name for the quanti column of the new data frame
+# quali.col.name: optional name for the quali column of the new data frame
+# RETURN
+# the modified data frame
+# EXAMPLES
+# obs <- data.frame(col1 = (1:4)*10, col2 = c("A", "B", "A", "A")) ; obs ; fun_df_remod(obs)
+# obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; obs ; fun_df_remod(obs, quanti.col.name = "quanti", quali.col.name = "quali")
+# obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; rownames(obs) <- paste0("row", 1:4) ; obs ; fun_df_remod(obs, quanti.col.name = "quanti", quali.col.name = "quali")
+# DEBUGGING
+# data = data.frame(a = 1:3, b = 4:6) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
+# data = data.frame(a = 1:3, b = 4:6, c = 11:13) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
+# data = data.frame(a = 1:3, b = letters[1:3]) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
+# data = data.frame(a = 1:3, b = letters[1:3]) ; quanti.col.name = "TEST" ; quali.col.name = "quali" # for function debugging
+# data = data.frame(b = letters[1:3], a = 1:3) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
+# data = data.frame(b = c("e", "e", "h"), a = 1:3) ; quanti.col.name = "quanti" ; quali.col.name = "quali" # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if( ! any(class(data) %in% "data.frame")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data ARGUMENT MUST BE A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = quanti.col.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = quali.col.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+tempo.factor <- unlist(lapply(data, class))
+for(i in 1:length(tempo.factor)){ # convert factor columns as character
+if(all(tempo.factor[i] == "factor")){
+data[, i] <- as.character(data[, i])
+}
+}
+tempo.factor <- unlist(lapply(data, mode))
+if(length(data) == 2){
+if( ! ((mode(data[, 1]) == "character" & mode(data[, 2]) == "numeric") | mode(data[, 2]) == "character" & mode(data[, 1]) == "numeric" | mode(data[, 2]) == "numeric" & mode(data[, 1]) == "numeric") ){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IF data ARGUMENT IS A DATA FRAME MADE OF 2 COLUMNS, EITHER A COLUMN MUST BE NUMERIC AND THE OTHER CHARACTER, OR THE TWO COLUMNS MUST BE NUMERIC\n\n================\n\n")
+stop(tempo.cat)
+}
+if((mode(data[, 1]) == "character" | mode(data[, 2]) == "character") & (quanti.col.name != "quanti" | quali.col.name != "quali")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IMPROPER quanti.col.name OR quali.col.name RESETTINGS. THESE ARGUMENTS ARE RESERVED FOR DATA FRAMES MADE OF n NUMERIC COLUMNS ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+}else{
+if( ! all(tempo.factor %in% "numeric")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": IF data ARGUMENT IS A DATA FRAME MADE OF ONE COLUMN, OR MORE THAN 2 COLUMNS, THESE COLUMNS MUST BE NUMERIC\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if(( ! any(tempo.factor %in% "character")) & is.null(names(data))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": NUMERIC DATA FRAME in the data ARGUMENT MUST HAVE COLUMN NAMES\n\n================\n\n")
+stop()
+}
+if(all(tempo.factor %in% "numeric")){ # transfo 1
+quanti <- NULL
+for(i in 1:length(data)){
+quanti <-c(quanti, data[, i])
+}
+quali <- rep(names(data), each = nrow(data))
+output.data <- data.frame(quanti, quali)
+names(output.data) <- c(quanti.col.name, quali.col.name)
+# add the ini_rowname column
+ini.rownames <- rownames(data)
+tempo.data <- data
+rownames(tempo.data) <- NULL
+null.rownames <- (tempo.data)
+if( ! identical(ini.rownames, null.rownames)){
+ini_rowname <- rep(ini.rownames, times = ncol(data))
+output.data <- cbind(output.data, ini_rowname)
+}
+}else{ # transfo 2
+if(class(data[, 1]) == "character"){
+data <- cbind(data[2], data[1])
+}
+nc.max <- max(table(data[, 2])) # effectif maximum des classes
+nb.na <- nc.max - table(data[,2]) # nombre de NA à ajouter pour réaliser la data frame
+tempo<-split(data[, 1], data[, 2])
+for(i in 1:length(tempo)){tempo[[i]] <- append(tempo[[i]], rep(NA, nb.na[i]))} # des NA doivent être ajoutés lorsque les effectifs sont différents entre les classes. C'est uniquement pour que chaque colonne ait le même nombre de lignes
+output.data<-data.frame(tempo)
+}
+return(output.data)
 }
 
 
@@ -1400,185 +1405,185 @@ fun_df_remod <- function(data, quanti.col.name = "quanti", quali.col.name = "qua
 
 
 fun_merge <- function(data1, data2, name1, name2, factor.as = "numeric", warn.print = FALSE){
-    # AIM
-    # merge the columns of 2 data frames or 2 matrices or 2 tables, by associating the rows according to 1 or several common colums that must be strictly similar between the 2 objects
-    # contrary to the classical merge() function of R, fun_merge() orders the rows of the 2 objects according to the common columns, and merge only and only if the ordered common columns are strictly identical. Otherwise return an error
-    # keep row names of data1 in the merged object if they exist. Do not consider row names of data2
-    # keep the intial row order of data1 after merging
-    # BEWARE:
-    # REQUIRED PACKAGES
-    # none
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_2d_comp()
-    # fun_check()
-    # ARGUMENTS
-    # data1: matrix or data frame or table
-    # data2: same class of object as data1 (data frame for data1 data frame, matrix for data1 matrix and table for data1 table) with same number of rows as in data1
-    # name1: either a vector of character strings or a vector of integer. If character strings, they must be the name of the columns in data1 that are common to the columns in data2. If integers, they must be the column numbers in data1 that are common to column numbers in data2. name1 can be strings and name2 (below) integers, and vice-versa. BEWARE: order of the elements in data1 are important as ordering is according to the first element, then the second, etc.
-    # name2: as in name1 but for data2. Order in name2 is not important as order in name1 is used for the ordering
-    # factor.as: either "numeric" (sort factors according to levels order, i.e., class number) or "character" (sort factors according to alphabetical order)
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # RETURN
-    # a list containing:
-    # $data: the merged data frame or matrix or table
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    # obs1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
-    # DEBUGGING
-    # data1 = matrix(1.0001:21, ncol = 4) ; dimnames(data1) <- list(LETTERS[1:5], letters[1:4]); data2 = matrix(1.0001:31, ncol = 6) ; dimnames(data2) <- list(NULL, c("a", "aa", "c", "d", "aaa", "aaaa")) ; set.seed(1) ; data2[, "c"] <- sample(data2[, "c"]) ; data2[, "d"] <- sample(data2[, "d"]) ; set.seed(NULL) ; data1 ; data2 ; name1 = c("c", "d") ; name2 = c("d", "c") ; factor.as = "numeric" # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking using fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo1 <- fun_check(data = data1, class = "matrix", print = FALSE)
-    tempo2 <- fun_check(data = data1, class = "data.frame", print = FALSE)
-    tempo3 <- fun_check(data = data1, class = "table", print = FALSE)
-    if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata1 ARGUMENT MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE)\nHERE IT IS: ", paste(class(data1), collapse = " "), "\n\n================\n\n") #
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo1 <- fun_check(data = data2, class = "matrix", print = FALSE)
-    tempo2 <- fun_check(data = data2, class = "data.frame", print = FALSE)
-    tempo3 <- fun_check(data = data2, class = "table", print = FALSE)
-    if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata2 ARGUMENT MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE)\nHERE IT IS: ", paste(class(data2), collapse = " "), "\n\n================\n\n") #
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! identical(class(data1), class(data2))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata1 and data2 ARGUMENTS MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE) OF SAME CLASS\nHERE IT IS RESPECTIVELY: ", paste(class(data1), collapse = " "), " AND ", paste(class(data2), collapse = " "), "\n\n================\n\n") #
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo1 <- fun_check(data = name1, class = "vector", typeof = "integer", , double.as.integer.allowed = TRUE, print = FALSE)
-    tempo2 <- fun_check(data = name1, class = "vector", typeof = "character", , print = FALSE)
-    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nname1 ARGUMENT MUST BE A UNIQUE CHARACTER STRING OR INTEGER\nHERE IT IS: ", paste(name1, collapse = " "), "\n\n================\n\n") #
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo1 <- fun_check(data = name2, class = "vector", typeof = "integer", , double.as.integer.allowed = TRUE, print = FALSE)
-    tempo2 <- fun_check(data = name2, class = "vector", typeof = "character", , print = FALSE)
-    if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nname2 ARGUMENT MUST BE A UNIQUE CHARACTER STRING OR INTEGER\nHERE IT IS: ", paste(name2, collapse = " "), "\n\n================\n\n") #
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = factor.as, options = c("numeric", "character"), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = warn.print, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking using fun_check()
-    # other argument checking
-    # column existence
-    if(mode(name1) == "character"){
-        if( ! all(name1 %in% colnames(data1))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nTHE CHARACTER STRINGS IN name1 ARGUMENT ARE NOT ALL COLUMN NAMES OF data1:\n", paste(name1, collapse = " "), "\n", colnames(data1), "\n\n================\n\n") #
-            stop(tempo.cat)
-        }
-    }else if(mode(name1) == "numeric"){
-        if( ! all((name1 > ncol(data1) & name1 <= 0))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nINTEGERS IN name1 ARGUMENT ARE NOT ALL COLUMN NUMBERS OF data1:\n", paste(name1, collapse = " "), "\n1:", ncol(data1), "\n\n================\n\n") #
-            stop(tempo.cat)
-        }
-    }else{
-        tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n")
-        stop(tempo.cat)
-    }
-    if(mode(name2) == "character"){
-        if( ! all(name2 %in% colnames(data2))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nTHE CHARACTER STRINGS IN name2 ARGUMENT ARE NOT ALL COLUMN NAMES OF data2:\n", paste(name2, collapse = " "), "\n", colnames(data2), "\n\n================\n\n") #
-            stop(tempo.cat)
-        }
-    }else if(mode(name2) == "numeric"){
-        if( ! all((name2 > ncol(data2) & name2 <= 0))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nINTEGERS IN name2 ARGUMENT ARE NOT ALL COLUMN NUMBERS OF data2:\n", paste(name2, collapse = " "), "\n1:", ncol(data2), "\n\n================\n\n") #
-            stop(tempo.cat)
-        }
-    }else{
-        tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n")
-        stop(tempo.cat)
-    }
-    if(length(name1) != length(name2)){
-        tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nLENGTH OF name1 ARGUMENT (", length(name1), ") IS NOT THE SAME AS LENGTH OF name2 ARGUMENT (", length(name2), "):\n", paste(name1, collapse = " "), "\n", paste(name2, collapse = " "), "\n\n============\n\n")
-        stop(tempo.cat)
-    }
-    # end column existence
-    # end other argument checking
-    # main code
-    # definition of set1 and set2: common columns
-    set1 <- data1[, name1, drop = FALSE] # set1 will be the reference for merging, drop = FALSE to keep the 2D structure
-    if(any(apply(set1, 2, FUN = "%in%", "factor"))){
-        if(factor.as == "numeric"){
-            set1[, apply(set1, 2, FUN = "%in%", "factor")] <- as.numeric(set1[, apply(set1, 2, FUN = "%in%", "factor")])
-        }
-    }
-    set2 <- data2[, name2, drop = FALSE] # set2 will be the reference for merging, drop = FALSE to keep the 2D structure
-    if(any(apply(set2, 2, FUN = "%in%", "factor"))){
-        if(factor.as == "numeric"){
-            set2[, apply(set2, 2, FUN = "%in%", "factor")] <- as.numeric(set2[, apply(set2, 2, FUN = "%in%", "factor")])
-        }
-    }
-    # end definition of set1 and set2: common columns
-    # conversion as character to avoid floating point problems
-    options.ini <- options()$digits
-    options(digits = 22)
-    set1 <- as.matrix(set1)
-    set2 <- as.matrix(set2)
-    mode(set1) <- "character"
-    mode(set2) <- "character"
-    options(digits = options.ini)
-    # end conversion as character to avoid floating point problems
-    # recovering initial order of set1
-    ini.set1.order <- eval(parse(text = paste("order(", paste("set1[, ", 1:ncol(set1), "]", sep = "", collapse = ", "), ")")))
-    set1 <- set1[ini.set1.order, ]
-    ini.set2.order <- eval(parse(text = paste("order(", paste("set2[, ", 1:ncol(set2), "]", sep = "", collapse = ", "), ")")))
-    set2 <- set2[ini.set2.order, ]
-    # end recovering initial order of set1
-    # check non identical columns
-    if(length(name1) > 1){
-        for(i2 in 1:(length(name1) - 1)){
-            for(i3 in (i2 + 1):length(name1)){
-                if(identical(set1[, i2], set1[, i3])){
-                    tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nCOLUMN ", i2, " OF data1 CORRESPONDING TO ELEMENT ", name1[i2], " OF name1 ARGUMENT IS IDENTICAL TO COLUMN ", i3, " OF data1 CORRESPONDING TO ELEMENT ", name1[i3], " OF name1 ARGUMENT\n\n============\n\n")
-                    stop(tempo.cat)
-                }
-            }
-        }
-    }
-    if(length(name2) > 1){
-        for(i2 in 1:(length(name2) - 1)){
-            for(i3 in (i2 + 1):length(name2)){
-                if(identical(set2[, i2], set2[, i3])){
-                    tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nCOLUMN ", i2, " OF data2 CORRESPONDING TO ELEMENT ", name2[i2], " OF name2 ARGUMENT IS IDENTICAL TO COLUMN ", i3, " OF data2 CORRESPONDING TO ELEMENT ", name2[i3], " OF name2 ARGUMENT\n\n============\n\n")
-                    stop(tempo.cat)
-                }
-            }
-        }
-    }
-    # end check non identical columns
-    # warning duplicates
-    # repositioning of the column in set2 as in set1 by comparing the two sorted column
-    #deal with identical col names when merging -> .x for data1, .y for data2
-    
-    
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    # output <- list()
-    return(output)
+# AIM
+# merge the columns of 2 data frames or 2 matrices or 2 tables, by associating the rows according to 1 or several common colums that must be strictly similar between the 2 objects
+# contrary to the classical merge() function of R, fun_merge() orders the rows of the 2 objects according to the common columns, and merge only and only if the ordered common columns are strictly identical. Otherwise return an error
+# keep row names of data1 in the merged object if they exist. Do not consider row names of data2
+# keep the intial row order of data1 after merging
+# BEWARE:
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_2d_comp()
+# fun_check()
+# ARGUMENTS
+# data1: matrix or data frame or table
+# data2: same class of object as data1 (data frame for data1 data frame, matrix for data1 matrix and table for data1 table) with same number of rows as in data1
+# name1: either a vector of character strings or a vector of integer. If character strings, they must be the name of the columns in data1 that are common to the columns in data2. If integers, they must be the column numbers in data1 that are common to column numbers in data2. name1 can be strings and name2 (below) integers, and vice-versa. BEWARE: order of the elements in data1 are important as ordering is according to the first element, then the second, etc.
+# name2: as in name1 but for data2. Order in name2 is not important as order in name1 is used for the ordering
+# factor.as: either "numeric" (sort factors according to levels order, i.e., class number) or "character" (sort factors according to alphabetical order)
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# RETURN
+# a list containing:
+# $data: the merged data frame or matrix or table
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# obs1 = matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5])) ; obs2 = as.data.frame(matrix(1:10, ncol = 5, dimnames = list(letters[1:2], LETTERS[1:5]))) ; obs1 ; obs2 ; fun_2d_comp(obs1, obs2)
+# DEBUGGING
+# data1 = matrix(1.0001:21, ncol = 4) ; dimnames(data1) <- list(LETTERS[1:5], letters[1:4]); data2 = matrix(1.0001:31, ncol = 6) ; dimnames(data2) <- list(NULL, c("a", "aa", "c", "d", "aaa", "aaaa")) ; set.seed(1) ; data2[, "c"] <- sample(data2[, "c"]) ; data2[, "d"] <- sample(data2[, "d"]) ; set.seed(NULL) ; data1 ; data2 ; name1 = c("c", "d") ; name2 = c("d", "c") ; factor.as = "numeric" # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking using fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo1 <- fun_check(data = data1, class = "matrix", print = FALSE)
+tempo2 <- fun_check(data = data1, class = "data.frame", print = FALSE)
+tempo3 <- fun_check(data = data1, class = "table", print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata1 ARGUMENT MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE)\nHERE IT IS: ", paste(class(data1), collapse = " "), "\n\n================\n\n") #
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo1 <- fun_check(data = data2, class = "matrix", print = FALSE)
+tempo2 <- fun_check(data = data2, class = "data.frame", print = FALSE)
+tempo3 <- fun_check(data = data2, class = "table", print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE & tempo3$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata2 ARGUMENT MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE)\nHERE IT IS: ", paste(class(data2), collapse = " "), "\n\n================\n\n") #
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! identical(class(data1), class(data2))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\ndata1 and data2 ARGUMENTS MUST BE A 2D OBJECT (MATRIX, DATA FRAME OR TABLE) OF SAME CLASS\nHERE IT IS RESPECTIVELY: ", paste(class(data1), collapse = " "), " AND ", paste(class(data2), collapse = " "), "\n\n================\n\n") #
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo1 <- fun_check(data = name1, class = "vector", typeof = "integer", , double.as.integer.allowed = TRUE, print = FALSE)
+tempo2 <- fun_check(data = name1, class = "vector", typeof = "character", , print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nname1 ARGUMENT MUST BE A UNIQUE CHARACTER STRING OR INTEGER\nHERE IT IS: ", paste(name1, collapse = " "), "\n\n================\n\n") #
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo1 <- fun_check(data = name2, class = "vector", typeof = "integer", , double.as.integer.allowed = TRUE, print = FALSE)
+tempo2 <- fun_check(data = name2, class = "vector", typeof = "character", , print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nname2 ARGUMENT MUST BE A UNIQUE CHARACTER STRING OR INTEGER\nHERE IT IS: ", paste(name2, collapse = " "), "\n\n================\n\n") #
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = factor.as, options = c("numeric", "character"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = warn.print, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking using fun_check()
+# other argument checking
+# column existence
+if(mode(name1) == "character"){
+if( ! all(name1 %in% colnames(data1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nTHE CHARACTER STRINGS IN name1 ARGUMENT ARE NOT ALL COLUMN NAMES OF data1:\n", paste(name1, collapse = " "), "\n", colnames(data1), "\n\n================\n\n") #
+stop(tempo.cat)
+}
+}else if(mode(name1) == "numeric"){
+if( ! all((name1 > ncol(data1) & name1 <= 0))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nINTEGERS IN name1 ARGUMENT ARE NOT ALL COLUMN NUMBERS OF data1:\n", paste(name1, collapse = " "), "\n1:", ncol(data1), "\n\n================\n\n") #
+stop(tempo.cat)
+}
+}else{
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n")
+stop(tempo.cat)
+}
+if(mode(name2) == "character"){
+if( ! all(name2 %in% colnames(data2))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nTHE CHARACTER STRINGS IN name2 ARGUMENT ARE NOT ALL COLUMN NAMES OF data2:\n", paste(name2, collapse = " "), "\n", colnames(data2), "\n\n================\n\n") #
+stop(tempo.cat)
+}
+}else if(mode(name2) == "numeric"){
+if( ! all((name2 > ncol(data2) & name2 <= 0))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ":\nINTEGERS IN name2 ARGUMENT ARE NOT ALL COLUMN NUMBERS OF data2:\n", paste(name2, collapse = " "), "\n1:", ncol(data2), "\n\n================\n\n") #
+stop(tempo.cat)
+}
+}else{
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n")
+stop(tempo.cat)
+}
+if(length(name1) != length(name2)){
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nLENGTH OF name1 ARGUMENT (", length(name1), ") IS NOT THE SAME AS LENGTH OF name2 ARGUMENT (", length(name2), "):\n", paste(name1, collapse = " "), "\n", paste(name2, collapse = " "), "\n\n============\n\n")
+stop(tempo.cat)
+}
+# end column existence
+# end other argument checking
+# main code
+# definition of set1 and set2: common columns
+set1 <- data1[, name1, drop = FALSE] # set1 will be the reference for merging, drop = FALSE to keep the 2D structure
+if(any(apply(set1, 2, FUN = "%in%", "factor"))){
+if(factor.as == "numeric"){
+set1[, apply(set1, 2, FUN = "%in%", "factor")] <- as.numeric(set1[, apply(set1, 2, FUN = "%in%", "factor")])
+}
+}
+set2 <- data2[, name2, drop = FALSE] # set2 will be the reference for merging, drop = FALSE to keep the 2D structure
+if(any(apply(set2, 2, FUN = "%in%", "factor"))){
+if(factor.as == "numeric"){
+set2[, apply(set2, 2, FUN = "%in%", "factor")] <- as.numeric(set2[, apply(set2, 2, FUN = "%in%", "factor")])
+}
+}
+# end definition of set1 and set2: common columns
+# conversion as character to avoid floating point problems
+options.ini <- options()$digits
+options(digits = 22)
+set1 <- as.matrix(set1)
+set2 <- as.matrix(set2)
+mode(set1) <- "character"
+mode(set2) <- "character"
+options(digits = options.ini)
+# end conversion as character to avoid floating point problems
+# recovering initial order of set1
+ini.set1.order <- eval(parse(text = paste("order(", paste("set1[, ", 1:ncol(set1), "]", sep = "", collapse = ", "), ")")))
+set1 <- set1[ini.set1.order, ]
+ini.set2.order <- eval(parse(text = paste("order(", paste("set2[, ", 1:ncol(set2), "]", sep = "", collapse = ", "), ")")))
+set2 <- set2[ini.set2.order, ]
+# end recovering initial order of set1
+# check non identical columns
+if(length(name1) > 1){
+for(i2 in 1:(length(name1) - 1)){
+for(i3 in (i2 + 1):length(name1)){
+if(identical(set1[, i2], set1[, i3])){
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nCOLUMN ", i2, " OF data1 CORRESPONDING TO ELEMENT ", name1[i2], " OF name1 ARGUMENT IS IDENTICAL TO COLUMN ", i3, " OF data1 CORRESPONDING TO ELEMENT ", name1[i3], " OF name1 ARGUMENT\n\n============\n\n")
+stop(tempo.cat)
+}
+}
+}
+}
+if(length(name2) > 1){
+for(i2 in 1:(length(name2) - 1)){
+for(i3 in (i2 + 1):length(name2)){
+if(identical(set2[, i2], set2[, i3])){
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ":\nCOLUMN ", i2, " OF data2 CORRESPONDING TO ELEMENT ", name2[i2], " OF name2 ARGUMENT IS IDENTICAL TO COLUMN ", i3, " OF data2 CORRESPONDING TO ELEMENT ", name2[i3], " OF name2 ARGUMENT\n\n============\n\n")
+stop(tempo.cat)
+}
+}
+}
+}
+# end check non identical columns
+# warning duplicates
+# repositioning of the column in set2 as in set1 by comparing the two sorted column
+#deal with identical col names when merging -> .x for data1, .y for data2
+
+
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+# output <- list()
+return(output)
 }
 
 
@@ -1587,82 +1592,82 @@ fun_merge <- function(data1, data2, name1, name2, factor.as = "numeric", warn.pr
 
 # Check OK: clear to go Apollo
 fun_round <- function(data, dec.nb = 2, after.lead.zero = TRUE){
-    # AIM
-    # round a vector of values, if decimal, with the desired number of decimal digits after the decimal leading zeros
-    # WARNINGS
-    # Work well with numbers as character strings, but not always with numerical numbers because of the floating point
-    # Numeric values are really truncated from a part of their decimal digits, whatever options(digits) settings
-    # See ?.Machine or https://stackoverflow.com/questions/5173692/how-to-return-number-of-decimal-places-in-r, with the interexting formula: abs(x - round(x)) > .Machine$double.eps^0.5
-    # ARGUMENTS
-    # data: a vector of numbers (numeric or character mode)
-    # dec.nb: number of required decimal digits
-    # after.lead.zero: logical. If FALSE, rounding is performed for all the decimal numbers, whatever the leading zeros (e.g., 0.123 -> 0.12 and 0.00128 -> 0.00). If TRUE, dec.nb are taken after the leading zeros (e.g., 0.123 -> 0.12 and 0.00128 -> 0.0013)
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # RETURN
-    # the modified vector
-    # EXAMPLES
-    # ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, 10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE), "\n\n") ; options(digits = ini.options)
-    # ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, 10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = TRUE), "\n\n") ; options(digits = ini.options)
-    # ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, "10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE), "\n\n") ; options(digits = ini.options)
-    # ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, "10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = TRUE), "\n\n") ; options(digits = ini.options)
-    # DEBUGGING
-    # data = data = c(10, 100.001, 333.0001254, 12312.1235) ; dec.nb = 2 ; after.lead.zero = FALSE # # for function debugging
-    # data = data = c("10", "100.001", "333.0001254", "12312.1235") ; dec.nb = 2 ; after.lead.zero = TRUE # # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if( ! (all(typeof(data) == "character") | all(typeof(data) == "double") | all(typeof(data) == "integer"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A VECTOR OF NUMBERS (IN NUMERIC OR CHARACTER MODE)\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data, class = "vector", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dec.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = after.lead.zero, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    tempo <- grepl(x = data, pattern = "\\.") # detection of decimal numbers
-    ini.mode <- mode(data)
-    data <- as.character(data) # to really truncate decimal digits
-    for(i in 1:length(data)){ # scan all the numbers of the vector
-        if(tempo[i] == TRUE){ # means decimal number
-            if(after.lead.zero == TRUE){
-                zero.pos <- unlist(gregexpr(text=data[i], pattern = 0)) # recover all the position of the zeros in the number. -1 if no zeros (do not record the leading and trailing zeros)
-            }else{
-                zero.pos <- -1 # -1 as if no zero
-            }
-            dot.pos <- unlist(gregexpr(text=data[i], pattern = "\\.")) # recover all the position of the zeros in the number
-            digit.pos <- unlist(gregexpr(text=data[i], pattern = "[[:digit:]]")) # recover all the position of the digits in the number
-            dec.pos <- digit.pos[digit.pos > dot.pos]
-            count <- 0
-            while((dot.pos + count + 1) %in% zero.pos & (dot.pos + count + 1) <= max(dec.pos) & (count + dec.nb) < length(dec.pos)){ # count the number of leading zeros in the decimal part
-                count <- count + 1
-            }
-            data[i] <- formatC(as.numeric(data[i]), digits = (count + dec.nb), format = "f")
-        }
-    }
-    if(ini.mode != "character"){
-        data <- as.numeric(data)
-    }
-    return(data)
+# AIM
+# round a vector of values, if decimal, with the desired number of decimal digits after the decimal leading zeros
+# WARNINGS
+# Work well with numbers as character strings, but not always with numerical numbers because of the floating point
+# Numeric values are really truncated from a part of their decimal digits, whatever options(digits) settings
+# See ?.Machine or https://stackoverflow.com/questions/5173692/how-to-return-number-of-decimal-places-in-r, with the interexting formula: abs(x - round(x)) > .Machine$double.eps^0.5
+# ARGUMENTS
+# data: a vector of numbers (numeric or character mode)
+# dec.nb: number of required decimal digits
+# after.lead.zero: logical. If FALSE, rounding is performed for all the decimal numbers, whatever the leading zeros (e.g., 0.123 -> 0.12 and 0.00128 -> 0.00). If TRUE, dec.nb are taken after the leading zeros (e.g., 0.123 -> 0.12 and 0.00128 -> 0.0013)
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# RETURN
+# the modified vector
+# EXAMPLES
+# ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, 10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE), "\n\n") ; options(digits = ini.options)
+# ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, 10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = TRUE), "\n\n") ; options(digits = ini.options)
+# ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, "10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE), "\n\n") ; options(digits = ini.options)
+# ini.options <- options()$digits ; options(digits = 8) ; cat(fun_round(data = c(NA, "10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = TRUE), "\n\n") ; options(digits = ini.options)
+# DEBUGGING
+# data = data = c(10, 100.001, 333.0001254, 12312.1235) ; dec.nb = 2 ; after.lead.zero = FALSE # # for function debugging
+# data = data = c("10", "100.001", "333.0001254", "12312.1235") ; dec.nb = 2 ; after.lead.zero = TRUE # # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if( ! (all(typeof(data) == "character") | all(typeof(data) == "double") | all(typeof(data) == "integer"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A VECTOR OF NUMBERS (IN NUMERIC OR CHARACTER MODE)\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data, class = "vector", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dec.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = after.lead.zero, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+tempo <- grepl(x = data, pattern = "\\.") # detection of decimal numbers
+ini.mode <- mode(data)
+data <- as.character(data) # to really truncate decimal digits
+for(i in 1:length(data)){ # scan all the numbers of the vector
+if(tempo[i] == TRUE){ # means decimal number
+if(after.lead.zero == TRUE){
+zero.pos <- unlist(gregexpr(text=data[i], pattern = 0)) # recover all the position of the zeros in the number. -1 if no zeros (do not record the leading and trailing zeros)
+}else{
+zero.pos <- -1 # -1 as if no zero
+}
+dot.pos <- unlist(gregexpr(text=data[i], pattern = "\\.")) # recover all the position of the zeros in the number
+digit.pos <- unlist(gregexpr(text=data[i], pattern = "[[:digit:]]")) # recover all the position of the digits in the number
+dec.pos <- digit.pos[digit.pos > dot.pos]
+count <- 0
+while((dot.pos + count + 1) %in% zero.pos & (dot.pos + count + 1) <= max(dec.pos) & (count + dec.nb) < length(dec.pos)){ # count the number of leading zeros in the decimal part
+count <- count + 1
+}
+data[i] <- formatC(as.numeric(data[i]), digits = (count + dec.nb), format = "f")
+}
+}
+if(ini.mode != "character"){
+data <- as.numeric(data)
+}
+return(data)
 }
 
 
@@ -1671,43 +1676,43 @@ fun_round <- function(data, dec.nb = 2, after.lead.zero = TRUE){
 
 # Check OK: clear to go Apollo
 fun_mat_rotate <- function(data){
-    # AIM
-    # 90° clockwise matrix rotation
-    # applied twice, the function provide the mirror matrix, according to vertical and horizontal symmetry
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data: matrix (matrix class)
-    # RETURN
-    # the modified matrix
-    # EXAMPLES
-    # obs <- matrix(1:10, ncol = 1) ; obs ; fun_mat_rotate(obs)
-    # obs <- matrix(LETTERS[1:10], ncol = 5) ; obs ; fun_mat_rotate(obs)
-    # DEBUGGING
-    # data = matrix(1:10, ncol = 1)
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data, class = "matrix", fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    for (i in 1:ncol(data)){data[,i] <- rev(data[,i])}
-    data <- t(data)
-    return(data)
+# AIM
+# 90° clockwise matrix rotation
+# applied twice, the function provide the mirror matrix, according to vertical and horizontal symmetry
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data: matrix (matrix class)
+# RETURN
+# the modified matrix
+# EXAMPLES
+# obs <- matrix(1:10, ncol = 1) ; obs ; fun_mat_rotate(obs)
+# obs <- matrix(LETTERS[1:10], ncol = 5) ; obs ; fun_mat_rotate(obs)
+# DEBUGGING
+# data = matrix(1:10, ncol = 1)
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data, class = "matrix", fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+for (i in 1:ncol(data)){data[,i] <- rev(data[,i])}
+data <- t(data)
+return(data)
 }
 
 
@@ -1716,228 +1721,228 @@ fun_mat_rotate <- function(data){
 
 # Check OK: clear to go Apollo
 fun_mat_num2color <- function(mat1, mat.hsv.h = TRUE, notch = 1, s = 1, v = 1, forced.color = NULL){
-    # AIM
-    # convert a matrix made of numbers into a hexadecimal matrix for rgb colorization
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS:
-    # mat1: matrix 1 of non negative numerical values that has to be colored (matrix class). NA allowed
-    # mat.hsv.h: logical. Is mat1 the h of hsv colors ? (if TRUE, mat1 must be between zero and 1)
-    # notch: single value between 0 and 1 to shift the successive colors on the hsv circle by + notch
-    # s: s argument of hsv(). Must be between 0 and 1
-    # v: v argument of hsv(). Must be between 0 and 1
-    # forced.color: Must be NULL or hexadecimal color code or name given by colors(). The first minimal values of mat1 will be these colors. All the color of mat1 can be forced using this argument
-    # RETURN
-    # a list containing:
-    # $mat1.name: name of mat1
-    # $colored.mat: colors of mat1 in hexa
-    # $problem: logical. Is any colors of forced.color overlap the colors designed by the function. NULL if forced.color = NULL
-    # $text.problem: text when overlapping colors. NULL if forced.color = NULL or problem == FALSE
-    # EXAMPLES
-    # mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]) ; fun_mat_num2color(mat1, mat.hsv.h = FALSE, notch = 1, s = 1, v = 1, forced.color = NULL)
-    # DEBUGGING
-    # mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]); mat.hsv.h = FALSE ; notch = 1 ; s = 1 ; v = 1 ; forced.color = c(hsv(1,1,1), hsv(0,0,0)) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = mat1, mode = "numeric", class = "matrix", na.contain = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = mat.hsv.h, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = notch, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = s, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = v, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # argument checking without fun_check()
-    if(mat.hsv.h == TRUE & fun_check(data = mat1, mode = "numeric", prop = TRUE, print = FALSE)$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 ARGUMENT MUST BE A MATRIX OF PROPORTIONS SINCE THE mat.hsv.h ARGUMENT IS SET TO TRUE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(forced.color)){
-        tempo <- fun_check(data = forced.color, class = "character")
-        if(tempo$problem == TRUE){
-            stop()
-        }
-        if( ! all(forced.color %in% colors() | grepl(pattern = "^#", forced.color))){ # check that all strings of forced.color start by #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": forced.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end argument checking without fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    problem <- NULL
-    text.problem <- NULL
-    mat1.name <- deparse(substitute(mat1))
-    # change the scale of the plotted matrix
-    if(mat.hsv.h == TRUE){
-        if(any(min(mat1, na.rm = TRUE) < 0 | max(mat1, na.rm = TRUE) > 1, na.rm = TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 MUST BE MADE OF VALUES BETWEEN 0 AND 1 BECAUSE mat.hsv.h ARGUMENT SET TO TRUE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }else{
-        if(any(mat1 - floor(mat1) > 0, na.rm = TRUE) | any(mat1 == 0, na.rm = TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 MUST BE MADE OF INTEGER VALUES WITHOUT 0 BECAUSE mat.hsv.h ARGUMENT SET TO FALSE\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            mat1 <- mat1 / max(mat1, na.rm = TRUE)
-        }
-    }
-    if(notch != 1){
-        different.color <- unique(as.vector(mat1))
-        different.color <- different.color[ ! is.na(different.color)]
-        tempo.different.color <- different.color + c(0, cumsum(rep(notch, length(different.color) - 1)))
-        tempo.different.color <- tempo.different.color - floor(tempo.different.color)
-        if(any(duplicated(tempo.different.color) == TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED VALUES AFTER USING notch (", paste(tempo.different.color[duplicated(tempo.different.color)], collapse = " "), "). TRY ANOTHER notch VALUE\n\n================\n\n")
-            stop(tempo.cat)
-        }else if(length(different.color) != length(tempo.different.color)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": LENGTH OF different.color (", paste(different.color, collapse = " "), ") DIFFERENT FROM LENGTH OF tempo.different.color (", paste(tempo.different.color, collapse = " "), ")\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            for(i in 1:length(different.color)){
-                mat1[mat1 == different.color[i]] <- tempo.different.color[i]
-            }
-        }
-    }
-    if( ! is.null(forced.color)){
-        hexa.values.to.change <- hsv(unique(sort(mat1))[1:length(forced.color)], s, v)
-    }
-    mat1[ ! is.na(mat1)] <- hsv(mat1[ ! is.na(mat1)], s, v)
-    if( ! is.null(forced.color)){
-        if(any(forced.color %in% mat1, na.rm = TRUE)){
-            problem <- TRUE
-            text.problem <- paste0("THE FOLLOWING COLORS WHERE INTRODUCED USING forced.color BUT WHERE ALREADY PRESENT IN THE COLORED MATRIX :", paste(forced.color[forced.color %in% mat1], collapse = " "))
-        }else{
-            problem <- FALSE
-        }
-        for(i in 1:length(hexa.values.to.change)){
-            if( ! any(mat1 == hexa.values.to.change[i], na.rm = TRUE)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE ", hexa.values.to.change[i], " VALUE FROM hexa.values.to.change IS NOT REPRESENTED IN mat1 : ", paste(unique(as.vector(mat1)), collapse = " "), "\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                mat1[which(mat1 == hexa.values.to.change[i])] <- forced.color[i]
-            }
-        }
-    }
-    output <- list(mat1.name = mat1.name, colored.mat = mat1, problem = problem, text.problem = text.problem)
-    return(output)
+# AIM
+# convert a matrix made of numbers into a hexadecimal matrix for rgb colorization
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS:
+# mat1: matrix 1 of non negative numerical values that has to be colored (matrix class). NA allowed
+# mat.hsv.h: logical. Is mat1 the h of hsv colors ? (if TRUE, mat1 must be between zero and 1)
+# notch: single value between 0 and 1 to shift the successive colors on the hsv circle by + notch
+# s: s argument of hsv(). Must be between 0 and 1
+# v: v argument of hsv(). Must be between 0 and 1
+# forced.color: Must be NULL or hexadecimal color code or name given by colors(). The first minimal values of mat1 will be these colors. All the color of mat1 can be forced using this argument
+# RETURN
+# a list containing:
+# $mat1.name: name of mat1
+# $colored.mat: colors of mat1 in hexa
+# $problem: logical. Is any colors of forced.color overlap the colors designed by the function. NULL if forced.color = NULL
+# $text.problem: text when overlapping colors. NULL if forced.color = NULL or problem == FALSE
+# EXAMPLES
+# mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]) ; fun_mat_num2color(mat1, mat.hsv.h = FALSE, notch = 1, s = 1, v = 1, forced.color = NULL)
+# DEBUGGING
+# mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]); mat.hsv.h = FALSE ; notch = 1 ; s = 1 ; v = 1 ; forced.color = c(hsv(1,1,1), hsv(0,0,0)) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
 }
-
-
-######## fun_mat_op() #### assemble several matrices with operation
-
-
-# Check OK: clear to go Apollo
-fun_mat_op <- function(mat.list, kind.of.operation = "+"){
-    # AIM
-    # assemble several matrices of same dimensions by performing by case operation. For instance add the value of all the case 1 (row1 & column1) of the matrices and put it in the case 1 of a new matrix M, add the value of all the case 2 (row2 & column1) of the matrices and put it in the case 2 of a new matrix M, etc.
-    
-    # c: case
-    # i: row number
-    # j: column number
-    # k: matrix number
-    # z: number of matrices
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_2d_comp()
-    # ARGUMENTS:
-    # mat.list: list of matrices
-    # kind.of.operation: either "+" (by case addition), "-" (by case subtraction) or "*" (by case multiplication)
-    # RETURN
-    # the assembled matrix, with row and/or column names only if all the matrices have identical row/column names
-    # EXAMPLES
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "+")
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "*")
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], c(NA, NA))) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "-")
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(c("A1", "A2", "A3", "A4"), letters[1:2])) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat3 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2, mat3), kind.of.operation = "+")
-    # DEBUGGING
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; mat.list = list(mat1, mat2) ; kind.of.operation = "+" # for function debugging
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], c(NA, NA))) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat.list = list(mat1, mat2) ; kind.of.operation = "*" # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_2d_comp() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = mat.list, class = "list", fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = kind.of.operation, options = c("+", "-", "*"), length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # argument checking without fun_check()
-    if(length(mat.list) < 2){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat.list ARGUMENT MUST BE A LIST CONTAINING AT LEAST 2 MATRICES\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    for(i0 in 1:length(mat.list)){
-        tempo <- fun_check(data = mat.list[[i0]], class = "matrix", mode = "numeric", na.contain = TRUE)
-        if(tempo$problem == TRUE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ELEMENT ", i0, " OF mat.list ARGUMENT MUST BE A NUMERIC MATRIX\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    ident.row.names <- TRUE
-    ident.col.names <- TRUE
-    for(i0 in 2:length(mat.list)){
-        tempo <- fun_2d_comp(data1 = mat.list[[1]], data2 = mat.list[[i0]])
-        if(tempo$same.dim == FALSE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX ", i0, " OF mat.list ARGUMENT MUST HAVE THE SAME DIMENSION (", paste(dim(mat.list[[i0]]), collapse = " "), ") THAN THE MATRIX 1 IN mat.list (", paste(dim(mat.list[[1]]), collapse = " "), ")\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if( ! is.null(tempo$same.row.name)){
-            if(tempo$same.row.name != TRUE){ # != TRUE to deal with NA
-                ident.row.names <- FALSE
-            }
-        }
-        if( ! is.null(tempo$same.col.name)){
-            if(tempo$same.col.name != TRUE){ # != TRUE to deal with NA
-                ident.col.names <- FALSE
-            }
-        }
-    }
-    # end argument checking without fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    output <- mat.list[[1]]
-    for(i0 in 2:length(mat.list)){
-        output <- get(kind.of.operation)(output, mat.list[[i0]])
-    }
-    dimnames(output) <- NULL
-    if(ident.row.names == TRUE){
-        rownames(output) <- rownames(mat.list[[1]])
-    }
-    if(ident.col.names == TRUE){
-        colnames(output) <- colnames(mat.list[[1]])
-    }
-    return(output)
+# end required function checking
+# argument checking
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = mat1, mode = "numeric", class = "matrix", na.contain = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = mat.hsv.h, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = notch, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = s, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = v, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# argument checking without fun_check()
+if(mat.hsv.h == TRUE & fun_check(data = mat1, mode = "numeric", prop = TRUE, print = FALSE)$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 ARGUMENT MUST BE A MATRIX OF PROPORTIONS SINCE THE mat.hsv.h ARGUMENT IS SET TO TRUE\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(forced.color)){
+tempo <- fun_check(data = forced.color, class = "character")
+if(tempo$problem == TRUE){
+stop()
+}
+if( ! all(forced.color %in% colors() | grepl(pattern = "^#", forced.color))){ # check that all strings of forced.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": forced.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end argument checking without fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+problem <- NULL
+text.problem <- NULL
+mat1.name <- deparse(substitute(mat1))
+# change the scale of the plotted matrix
+if(mat.hsv.h == TRUE){
+if(any(min(mat1, na.rm = TRUE) < 0 | max(mat1, na.rm = TRUE) > 1, na.rm = TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 MUST BE MADE OF VALUES BETWEEN 0 AND 1 BECAUSE mat.hsv.h ARGUMENT SET TO TRUE\n\n================\n\n")
+stop(tempo.cat)
+}
+}else{
+if(any(mat1 - floor(mat1) > 0, na.rm = TRUE) | any(mat1 == 0, na.rm = TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat1 MUST BE MADE OF INTEGER VALUES WITHOUT 0 BECAUSE mat.hsv.h ARGUMENT SET TO FALSE\n\n================\n\n")
+stop(tempo.cat)
+}else{
+mat1 <- mat1 / max(mat1, na.rm = TRUE)
+}
+}
+if(notch != 1){
+different.color <- unique(as.vector(mat1))
+different.color <- different.color[ ! is.na(different.color)]
+tempo.different.color <- different.color + c(0, cumsum(rep(notch, length(different.color) - 1)))
+tempo.different.color <- tempo.different.color - floor(tempo.different.color)
+if(any(duplicated(tempo.different.color) == TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED VALUES AFTER USING notch (", paste(tempo.different.color[duplicated(tempo.different.color)], collapse = " "), "). TRY ANOTHER notch VALUE\n\n================\n\n")
+stop(tempo.cat)
+}else if(length(different.color) != length(tempo.different.color)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": LENGTH OF different.color (", paste(different.color, collapse = " "), ") DIFFERENT FROM LENGTH OF tempo.different.color (", paste(tempo.different.color, collapse = " "), ")\n\n================\n\n")
+stop(tempo.cat)
+}else{
+for(i in 1:length(different.color)){
+mat1[mat1 == different.color[i]] <- tempo.different.color[i]
+}
+}
+}
+if( ! is.null(forced.color)){
+hexa.values.to.change <- hsv(unique(sort(mat1))[1:length(forced.color)], s, v)
+}
+mat1[ ! is.na(mat1)] <- hsv(mat1[ ! is.na(mat1)], s, v)
+if( ! is.null(forced.color)){
+if(any(forced.color %in% mat1, na.rm = TRUE)){
+problem <- TRUE
+text.problem <- paste0("THE FOLLOWING COLORS WHERE INTRODUCED USING forced.color BUT WHERE ALREADY PRESENT IN THE COLORED MATRIX :", paste(forced.color[forced.color %in% mat1], collapse = " "))
+}else{
+problem <- FALSE
+}
+for(i in 1:length(hexa.values.to.change)){
+if( ! any(mat1 == hexa.values.to.change[i], na.rm = TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE ", hexa.values.to.change[i], " VALUE FROM hexa.values.to.change IS NOT REPRESENTED IN mat1 : ", paste(unique(as.vector(mat1)), collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}else{
+mat1[which(mat1 == hexa.values.to.change[i])] <- forced.color[i]
+}
+}
+}
+output <- list(mat1.name = mat1.name, colored.mat = mat1, problem = problem, text.problem = text.problem)
+return(output)
+}
+
+
+######## fun_mat_op() #### assemble several matrices with operation
+
+
+# Check OK: clear to go Apollo
+fun_mat_op <- function(mat.list, kind.of.operation = "+"){
+# AIM
+# assemble several matrices of same dimensions by performing by case operation. For instance add the value of all the case 1 (row1 & column1) of the matrices and put it in the case 1 of a new matrix M, add the value of all the case 2 (row2 & column1) of the matrices and put it in the case 2 of a new matrix M, etc.
+ 
+# c: case
+# i: row number
+# j: column number
+# k: matrix number
+# z: number of matrices
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_2d_comp()
+# ARGUMENTS:
+# mat.list: list of matrices
+# kind.of.operation: either "+" (by case addition), "-" (by case subtraction) or "*" (by case multiplication)
+# RETURN
+# the assembled matrix, with row and/or column names only if all the matrices have identical row/column names
+# EXAMPLES
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "+")
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "*")
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], c(NA, NA))) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2), kind.of.operation = "-")
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(c("A1", "A2", "A3", "A4"), letters[1:2])) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat3 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; fun_mat_op(mat.list = list(mat1, mat2, mat3), kind.of.operation = "+")
+# DEBUGGING
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; mat.list = list(mat1, mat2) ; kind.of.operation = "+" # for function debugging
+# mat1 = matrix(c(1,1,1,2,1,5,9,8), ncol = 2, dimnames = list(LETTERS[1:4], c(NA, NA))) ; mat2 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2, dimnames = list(LETTERS[1:4], letters[1:2])) ; mat.list = list(mat1, mat2) ; kind.of.operation = "*" # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_2d_comp() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = mat.list, class = "list", fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = kind.of.operation, options = c("+", "-", "*"), length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# argument checking without fun_check()
+if(length(mat.list) < 2){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat.list ARGUMENT MUST BE A LIST CONTAINING AT LEAST 2 MATRICES\n\n================\n\n")
+stop(tempo.cat)
+}
+for(i0 in 1:length(mat.list)){
+tempo <- fun_check(data = mat.list[[i0]], class = "matrix", mode = "numeric", na.contain = TRUE)
+if(tempo$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ELEMENT ", i0, " OF mat.list ARGUMENT MUST BE A NUMERIC MATRIX\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+ident.row.names <- TRUE
+ident.col.names <- TRUE
+for(i0 in 2:length(mat.list)){
+tempo <- fun_2d_comp(data1 = mat.list[[1]], data2 = mat.list[[i0]])
+if(tempo$same.dim == FALSE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX ", i0, " OF mat.list ARGUMENT MUST HAVE THE SAME DIMENSION (", paste(dim(mat.list[[i0]]), collapse = " "), ") THAN THE MATRIX 1 IN mat.list (", paste(dim(mat.list[[1]]), collapse = " "), ")\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(tempo$same.row.name)){
+if(tempo$same.row.name != TRUE){ # != TRUE to deal with NA
+ident.row.names <- FALSE
+}
+}
+if( ! is.null(tempo$same.col.name)){
+if(tempo$same.col.name != TRUE){ # != TRUE to deal with NA
+ident.col.names <- FALSE
+}
+}
+}
+# end argument checking without fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+output <- mat.list[[1]]
+for(i0 in 2:length(mat.list)){
+output <- get(kind.of.operation)(output, mat.list[[i0]])
+}
+dimnames(output) <- NULL
+if(ident.row.names == TRUE){
+rownames(output) <- rownames(mat.list[[1]])
+}
+if(ident.col.names == TRUE){
+colnames(output) <- colnames(mat.list[[1]])
+}
+return(output)
 }
 
 
@@ -1946,71 +1951,71 @@ fun_mat_op <- function(mat.list, kind.of.operation = "+"){
 
 # Check OK: clear to go Apollo
 fun_mat_inv <- function(mat){
-    # AIM
-    # return the inverse of a square matrix when solve() cannot
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS:
-    # mat: a square numeric matrix without NULL, NA, Inf or single case (dimension 1, 1) of 0
-    # RETURN
-    # the inversed matrix
-    # EXAMPLES
-    # mat1 = matrix(c(1,1,1,2,1,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1) # use solve()
-    # mat1 = matrix(c(0,0,0,0,0,0,0,0,0), ncol = 3) ; fun_mat_inv(mat = mat1) # use the trick
-    # mat1 = matrix(c(1,1,1,2,Inf,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1)
-    # mat1 = matrix(c(1,1,1,2,NA,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1)
-    # mat1 = matrix(c(1,2), ncol = 1) ; fun_mat_inv(mat = mat1)
-    # mat1 = matrix(0, ncol = 1) ; fun_mat_inv(mat = mat1)
-    # mat1 = matrix(2, ncol = 1) ; fun_mat_inv(mat = mat1)
-    # DEBUGGING
-    # mat = matrix(c(1,1,1,2,1,5,9,8,9), ncol = 3) # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = mat, class = "matrix", mode = "numeric", fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # argument checking without fun_check()
-    if(ncol(mat) != nrow(mat)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A SQUARE MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(any(mat %in% c(Inf, -Inf, NA))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A MATRIX WITHOUT Inf, -Inf OR NA\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(all(mat == 0) & ncol(mat) == 1){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT CANNOT BE A SQUARE MATRIX MADE OF A SINGLE CASE OF 0\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    if(any(grepl(x = try(solve(mat), silent = TRUE)[], pattern = "[Ee]rror"))){
-        tempo <- svd(mat)
-        val.critique <- which(tempo$d < 10^-8)
-        Diag.mod <- diag(1 / tempo$d)
-        for(i in val.critique){
-            Diag.mod[i, i] <- 0
-        }
-        return(tempo$v %*% Diag.mod %*% t(tempo$u))
-    }else{
-        return(solve(mat))
-    }
+# AIM
+# return the inverse of a square matrix when solve() cannot
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS:
+# mat: a square numeric matrix without NULL, NA, Inf or single case (dimension 1, 1) of 0
+# RETURN
+# the inversed matrix
+# EXAMPLES
+# mat1 = matrix(c(1,1,1,2,1,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1) # use solve()
+# mat1 = matrix(c(0,0,0,0,0,0,0,0,0), ncol = 3) ; fun_mat_inv(mat = mat1) # use the trick
+# mat1 = matrix(c(1,1,1,2,Inf,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1)
+# mat1 = matrix(c(1,1,1,2,NA,5,9,8,9), ncol = 3) ; fun_mat_inv(mat = mat1)
+# mat1 = matrix(c(1,2), ncol = 1) ; fun_mat_inv(mat = mat1)
+# mat1 = matrix(0, ncol = 1) ; fun_mat_inv(mat = mat1)
+# mat1 = matrix(2, ncol = 1) ; fun_mat_inv(mat = mat1)
+# DEBUGGING
+# mat = matrix(c(1,1,1,2,1,5,9,8,9), ncol = 3) # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = mat, class = "matrix", mode = "numeric", fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# argument checking without fun_check()
+if(ncol(mat) != nrow(mat)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A SQUARE MATRIX\n\n================\n\n")
+stop(tempo.cat)
+}
+if(any(mat %in% c(Inf, -Inf, NA))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A MATRIX WITHOUT Inf, -Inf OR NA\n\n================\n\n")
+stop(tempo.cat)
+}
+if(all(mat == 0) & ncol(mat) == 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT CANNOT BE A SQUARE MATRIX MADE OF A SINGLE CASE OF 0\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+if(any(grepl(x = try(solve(mat), silent = TRUE)[], pattern = "[Ee]rror"))){
+tempo <- svd(mat)
+val.critique <- which(tempo$d < 10^-8)
+Diag.mod <- diag(1 / tempo$d)
+for(i in val.critique){
+Diag.mod[i, i] <- 0
+}
+return(tempo$v %*% Diag.mod %*% t(tempo$u))
+}else{
+return(solve(mat))
+}
 }
 
 
@@ -2019,142 +2024,142 @@ fun_mat_inv <- function(mat){
 
 # Check OK: clear to go Apollo
 fun_mat_fill <- function(mat, empty.cell.string = 0, warn.print = FALSE){
-    # AIM
-    # detect the empty half part of a symmetric square matrix (either topleft, topright, bottomleft or bottomright)
-    # fill this empty half part using the other symmetric half part of the matrix
-    # WARNINGS
-    # a plot verification using fun_gg_heatmap() is recommanded
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS:
-    # mat: a numeric or character square matrix with the half part (according to the grand diagonal) filled with NA (any kind of matrix), "0" (character matrix) or 0 (numeric matrix) exclusively (not a mix of 0 and NA in the empty part)
-    # empty.cell.string: a numeric, character or NA (no quotes) indicating what empty cells are filled with
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # RETURN
-    # a list containing:
-    # $mat: the filled matrix
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    # mat1 = matrix(c(1,NA,NA,NA, 0,2,NA,NA, NA,3,4,NA, 5,6,7,8), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = NA, warn.print = TRUE) # bottomleft example
-    # mat1 = matrix(c(1,1,1,2, 0,2,3,0, NA,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = NA, warn.print = TRUE) # error example
-    # mat1 = matrix(c(1,1,1,2, 0,2,3,0, NA,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # bottomright example
-    # mat1 = matrix(c(1,1,1,2, "a",2,3,NA, "a","a",0,0, "a","a","a",0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = "a", warn.print = TRUE) # topright example
-    # mat1 = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,NA, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # topleft example
-    # mat1 = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # error example
-    # DEBUGGING
-    # mat = matrix(c(1,NA,NA,NA, 0,2,NA,NA, NA,3,4,NA, 5,6,7,8), ncol = 4) ; empty.cell.string = NA ; warn.print = TRUE # for function debugging
-    # mat = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,NA, 5,0,0,0), ncol = 4) ; empty.cell.string = 0 ; warn.print = TRUE # for function debugging # topleft example
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = mat, class = "matrix", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = empty.cell.string, class = "vector", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # argument checking without fun_check()
-    if(ncol(mat) != nrow(mat)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A SQUARE MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! (mode(mat) %in% c("numeric", "character"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A NUMERIC OR CHARACTER MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(nrow(mat) == 1 & ncol(mat) == 1){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT CANNOT BE A SQUARE MATRIX MADE OF A SINGLE CASE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(ifelse(is.na(empty.cell.string), ! any(is.na(mat)), ! any(mat == empty.cell.string, na.rm = TRUE))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MATRIX MUST HAVE CELLS WITH THE EMPTY STRING SPECIFIED IN empty.cell.string ARGUMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    list.diag <- vector("list", length = nrow(mat) - 1)
-    for(i0 in 1:(nrow(mat) - 1)){
-        list.diag[[i0]] <- numeric(length = nrow(mat) - i0)
-    }
-    sector <- c("topleft", "topright", "bottomright", "bottomleft")
-    diag.scan <-c( # same order as sector. Recover each diag from center to corner
-        "mat[as.matrix(as.data.frame(list(1:(nrow(mat) - i1), (ncol(mat) -i1):1)))]", # topleft part
-        "mat[as.matrix(as.data.frame(list(1:(nrow(mat) - i1), (1:ncol(mat))[-(1:i1)])))]", # topright part
-        "mat[as.matrix(as.data.frame(list((1 + i1):nrow(mat), ncol(mat):(1 + i1))))]", # bottomright part
-        "mat[as.matrix(as.data.frame(list((1 + i1):nrow(mat), 1:(ncol(mat) -i1))))]" # bottomleft part
-    )
-    # empty part detection
-    tempo.list.diag <- list.diag
-    empty.sector <- NULL
-    full.sector <- NULL
-    warning <- NULL
-    for(i0 in 1:length(sector)){
-        tempo.list.diag <- list.diag
-        for(i1 in 1:(nrow(mat) - 1)){
-            tempo.list.diag[[i1]] <- eval(parse(text = diag.scan[i0]))
-            if(ifelse(is.na(empty.cell.string), ! all(is.na(tempo.list.diag[[i1]])), ! (all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = TRUE) & ! (is.na(all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE)))))){ # I had to add this ! (is.na(all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE))) because all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE) gives NA and not FALSE if one NA in tempo.list.diag[[i1]] -> not good for if()
-                full.sector <- c(full.sector, sector[i0])
-                break
-            }
-        }
-        if(i1 == nrow(mat) - 1){
-            if(all(unlist(lapply(tempo.list.diag, FUN = function(x){if(is.na(empty.cell.string)){is.na(x)}else{x == empty.cell.string}})), na.rm = TRUE)){
-                empty.sector <- c(empty.sector, sector[i0])
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": EMPTY SECTOR DETECTED ON THE ", toupper(sector[i0]), " CORNER, FULL OF ", empty.cell.string)
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }else{
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE ", toupper(sector[i0]), " SECTOR, DETECTED AS EMPTY, IS NOT? DIFFERENT VALUES IN THIS SECTOR:\n", paste(names(table(unlist(tempo.list.diag), useNA = "ifany")), collapse = " "), "\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-    }
-    # end empty part detection
-    if(length(empty.sector) == 0){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ACCORDING TO empty.cell.string ARGUMENT (", empty.cell.string, "), mat ARGUMENT MATRIX HAS ZERO EMPTY HALF PART")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }else{
-        if(length(empty.sector) > 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ACCORDING TO empty.cell.string ARGUMENT (", empty.cell.string, "), mat ARGUMENT MATRIX HAS MORE THAN ONE EMPTY HALF PART (ACCORDING TO THE GRAND DIAGONAL): ", paste(empty.sector, collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }else if(any(full.sector %in% empty.sector, na.rm = TRUE)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE FUNCTION HAS DETECTED EMPTY AND NON EMPTY HALF PART IN THE SAME SECTOR: ", paste(full.sector[full.sector %in% empty.sector], collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }else if(length(empty.sector) + length(full.sector)!= 4){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE FUNCTION HAS DETECTED MORE OR LESS SECTORS THAN 4:\nEMPTY SECTORS:", paste(empty.sector, collapse = " "), "\nFULL SECTORS:", paste(full.sector, collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        # matrix filling
-        for(i1 in 1:(nrow(mat) - 1)){
-            if(empty.sector == "topleft"){
-                eval(parse(text = paste0(diag.scan[1], " <- ", diag.scan[3])))
-            }else if(empty.sector == "topright"){
-                eval(parse(text = paste0(diag.scan[2], " <- ", diag.scan[4])))
-            }else if(empty.sector == "bottomright"){
-                eval(parse(text = paste0(diag.scan[3], " <- ", diag.scan[1])))
-            }else if(empty.sector == "bottomleft"){
-                eval(parse(text = paste0(diag.scan[4], " <- ", diag.scan[2])))
-            }
-        }
-        # end matrix filling
-    }
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    return(list(mat = mat, warnings = warning))
+# AIM
+# detect the empty half part of a symmetric square matrix (either topleft, topright, bottomleft or bottomright)
+# fill this empty half part using the other symmetric half part of the matrix
+# WARNINGS
+# a plot verification using fun_gg_heatmap() is recommanded
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS:
+# mat: a numeric or character square matrix with the half part (according to the grand diagonal) filled with NA (any kind of matrix), "0" (character matrix) or 0 (numeric matrix) exclusively (not a mix of 0 and NA in the empty part)
+# empty.cell.string: a numeric, character or NA (no quotes) indicating what empty cells are filled with
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# RETURN
+# a list containing:
+# $mat: the filled matrix
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# mat1 = matrix(c(1,NA,NA,NA, 0,2,NA,NA, NA,3,4,NA, 5,6,7,8), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = NA, warn.print = TRUE) # bottomleft example
+# mat1 = matrix(c(1,1,1,2, 0,2,3,0, NA,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = NA, warn.print = TRUE) # error example
+# mat1 = matrix(c(1,1,1,2, 0,2,3,0, NA,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # bottomright example
+# mat1 = matrix(c(1,1,1,2, "a",2,3,NA, "a","a",0,0, "a","a","a",0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = "a", warn.print = TRUE) # topright example
+# mat1 = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,NA, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # topleft example
+# mat1 = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,0, 5,0,0,0), ncol = 4) ; mat1 ; fun_mat_fill(mat = mat1, empty.cell.string = 0, warn.print = TRUE) # error example
+# DEBUGGING
+# mat = matrix(c(1,NA,NA,NA, 0,2,NA,NA, NA,3,4,NA, 5,6,7,8), ncol = 4) ; empty.cell.string = NA ; warn.print = TRUE # for function debugging
+# mat = matrix(c(0,0,0,2, 0,0,3,0, 0,3,0,NA, 5,0,0,0), ncol = 4) ; empty.cell.string = 0 ; warn.print = TRUE # for function debugging # topleft example
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = mat, class = "matrix", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = empty.cell.string, class = "vector", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# argument checking without fun_check()
+if(ncol(mat) != nrow(mat)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A SQUARE MATRIX\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (mode(mat) %in% c("numeric", "character"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MUST BE A NUMERIC OR CHARACTER MATRIX\n\n================\n\n")
+stop(tempo.cat)
+}
+if(nrow(mat) == 1 & ncol(mat) == 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT CANNOT BE A SQUARE MATRIX MADE OF A SINGLE CASE\n\n================\n\n")
+stop(tempo.cat)
+}
+if(ifelse(is.na(empty.cell.string), ! any(is.na(mat)), ! any(mat == empty.cell.string, na.rm = TRUE))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mat ARGUMENT MATRIX MUST HAVE CELLS WITH THE EMPTY STRING SPECIFIED IN empty.cell.string ARGUMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+list.diag <- vector("list", length = nrow(mat) - 1)
+for(i0 in 1:(nrow(mat) - 1)){
+list.diag[[i0]] <- numeric(length = nrow(mat) - i0)
+}
+sector <- c("topleft", "topright", "bottomright", "bottomleft")
+diag.scan <-c( # same order as sector. Recover each diag from center to corner
+"mat[as.matrix(as.data.frame(list(1:(nrow(mat) - i1), (ncol(mat) -i1):1)))]", # topleft part
+"mat[as.matrix(as.data.frame(list(1:(nrow(mat) - i1), (1:ncol(mat))[-(1:i1)])))]", # topright part
+"mat[as.matrix(as.data.frame(list((1 + i1):nrow(mat), ncol(mat):(1 + i1))))]", # bottomright part
+"mat[as.matrix(as.data.frame(list((1 + i1):nrow(mat), 1:(ncol(mat) -i1))))]" # bottomleft part
+)
+# empty part detection
+tempo.list.diag <- list.diag
+empty.sector <- NULL
+full.sector <- NULL
+warning <- NULL
+for(i0 in 1:length(sector)){
+tempo.list.diag <- list.diag
+for(i1 in 1:(nrow(mat) - 1)){
+tempo.list.diag[[i1]] <- eval(parse(text = diag.scan[i0]))
+if(ifelse(is.na(empty.cell.string), ! all(is.na(tempo.list.diag[[i1]])), ! (all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = TRUE) & ! (is.na(all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE)))))){ # I had to add this ! (is.na(all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE))) because all(tempo.list.diag[[i1]] == empty.cell.string, na.rm = FALSE) gives NA and not FALSE if one NA in tempo.list.diag[[i1]] -> not good for if()
+full.sector <- c(full.sector, sector[i0])
+break
+}
+}
+if(i1 == nrow(mat) - 1){
+if(all(unlist(lapply(tempo.list.diag, FUN = function(x){if(is.na(empty.cell.string)){is.na(x)}else{x == empty.cell.string}})), na.rm = TRUE)){
+empty.sector <- c(empty.sector, sector[i0])
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": EMPTY SECTOR DETECTED ON THE ", toupper(sector[i0]), " CORNER, FULL OF ", empty.cell.string)
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE ", toupper(sector[i0]), " SECTOR, DETECTED AS EMPTY, IS NOT? DIFFERENT VALUES IN THIS SECTOR:\n", paste(names(table(unlist(tempo.list.diag), useNA = "ifany")), collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+# end empty part detection
+if(length(empty.sector) == 0){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ACCORDING TO empty.cell.string ARGUMENT (", empty.cell.string, "), mat ARGUMENT MATRIX HAS ZERO EMPTY HALF PART")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+if(length(empty.sector) > 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ACCORDING TO empty.cell.string ARGUMENT (", empty.cell.string, "), mat ARGUMENT MATRIX HAS MORE THAN ONE EMPTY HALF PART (ACCORDING TO THE GRAND DIAGONAL): ", paste(empty.sector, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}else if(any(full.sector %in% empty.sector, na.rm = TRUE)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE FUNCTION HAS DETECTED EMPTY AND NON EMPTY HALF PART IN THE SAME SECTOR: ", paste(full.sector[full.sector %in% empty.sector], collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}else if(length(empty.sector) + length(full.sector)!= 4){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE FUNCTION HAS DETECTED MORE OR LESS SECTORS THAN 4:\nEMPTY SECTORS:", paste(empty.sector, collapse = " "), "\nFULL SECTORS:", paste(full.sector, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+# matrix filling
+for(i1 in 1:(nrow(mat) - 1)){
+if(empty.sector == "topleft"){
+eval(parse(text = paste0(diag.scan[1], " <- ", diag.scan[3])))
+}else if(empty.sector == "topright"){
+eval(parse(text = paste0(diag.scan[2], " <- ", diag.scan[4])))
+}else if(empty.sector == "bottomright"){
+eval(parse(text = paste0(diag.scan[3], " <- ", diag.scan[1])))
+}else if(empty.sector == "bottomleft"){
+eval(parse(text = paste0(diag.scan[4], " <- ", diag.scan[2])))
+}
+}
+# end matrix filling
+}
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+return(list(mat = mat, warnings = warning))
 }
 
 
@@ -2162,371 +2167,371 @@ fun_mat_fill <- function(mat, empty.cell.string = 0, warn.print = FALSE){
 
 
 fun_permut <- function(data1, data2 = NULL, n = NULL, seed = NULL, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2, warn.print = FALSE, path.lib = NULL){
-    # AIM
-    # reorder the elements of the data1 vector by flipping 2 randomly selected  consecutive positions either:
-    # 1) n times (when n is precised) or
-    # 2) until the correlation between data1 and data2 decreases down to the cor.limit (0.2 by default). See cor.limit below to deal with negative correlations
-    # Example of consecutive position flipping: ABCD -> BACD -> BADC, etc.
-    # WARNINGS
-    # see # https://www.r-bloggers.com/strategies-to-speedup-r-code/ for code speedup
-    # the random switch of non consecutive positions (ABCD -> DBCA for instance) does not work very well as the correaltion is quickly obtained but the initial vector structure is mainly kept (no much order). Ths code would be: pos <- ini.pos[1:2] ; pos <- sample.int(n = n , size = 2, replace = FALSE) ; tempo.pos[pos] <- tempo.pos[rev(pos)]
-    # ARGUMENTS
-    # data1: a vector of at least 2 elements. Must be numeric if data2 is specified
-    # data2: a numeric vector of same length as data1
-    # n: number of times "flipping 2 randomly selected consecutive positions". Ignored if data2 is specified
-    # seed: integer number used by set.seed(). Write NULL if random result is required, an integer otherwise. BEWARE: if not NULL, fun_permut() will systematically return the same result when the other parameters keep the same settings
-    # count.print: interger value. Print a working progress message every count.print during loops. BEWARE: can increase substentially the time to complete the process using a small value, like 10 for instance. Use Inf is no loop message desired
-    # text.print: optional message to add to the working progress message every count.print loop
-    # cor.method: correlation method. Either "pearson", "kendall" or "spearman". Ignored if data2 is not specified
-    # cor.limit: a correlation limit (between 0 and 1). Ignored if data2 is not specified. Compute the correlation between data1 and data2, permute the data1 values, and stop the permutation process when the correlation between data1 and data2 decreases down below the cor limit value (0.2 by default). If cor(data1, data2) is negative, then -cor.limit is used and the process stops until the correlation between data1 and data2 increases up over cor.limit (-0.2 by default). BEWARE: write a positive cor.limit even if cor(data1, data2) is known to be negative. The function will automatically uses -cor.limit. If the initial correlation is already below cor.limit (positive correlation) or over -cor.limit (negative correlation), then the data1 value positions are completely randomized (correlation between data1 and data2 is expected to be 0)
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # lubridate
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_pack()
-    # fun_round()
-    # RETURN
-    # a list containing:
-    # $data: the modified vector
-    # $warnings: potential warning messages (in case of negative correlation when data2 is specified). NULL if non warning message
-    # $cor: a spearman correlation between the initial positions (1:length(data1) and the final positions if data2 is not specified and the final correlation between data1 and data2 otherwise, according to cor.method
-    # $count: the number of loops used
-    # EXAMPLES
-    # example (1) showing that for loop, used in fun_permut(), is faster than while loop
-    # ini.time <- as.numeric(Sys.time()) ; count <- 0 ; for(i0 in 1:1e9){count <- count + 1} ; tempo.time <- as.numeric(Sys.time()) ; tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time)) ; tempo.lapse
-    # example (2) showing that for loop, used in fun_permut(), is faster than while loop
-    # ini.time <- as.numeric(Sys.time()) ; count <- 0 ; while(count < 1e9){count <- count + 1} ; tempo.time <- as.numeric(Sys.time()) ; tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time)) ; tempo.lapse
-    # fun_permut(data1 = LETTERS[1:5], data2 = NULL, n = 100, seed = 1, count.print = 10, text.print = "CPU NB 4")
-    # fun_permut(data1 = 101:110, data2 = 21:30, seed = 1, count.print = 1e4, text.print = "", cor.method = "spearman", cor.limit = 0.2)
-    # a way to use the cor.limit argument just considering data1
-    # obs1 <- 101:110 ; fun_permut(data1 = obs1, data2 = obs1, seed = 1, count.print = 10, cor.method = "spearman", cor.limit = 0.2)
-    # fun_permut(data1 = 1:1e3, data2 = 1e3:1, seed = 1, count.print = 1e6, text.print = "", cor.method = "spearman", cor.limit = 0.7)
-    # fun_permut(data1 = 1:1e2, data2 = 1e2:1, seed = 1, count.print = 1e3, cor.limit = 0.5)
-    # fun_permut(data1 = c(0,0,0,0,0), n = 5, data2 = NULL, seed = 1, count.print = 1e3, cor.limit = 0.5)
-    # DEBUGGING
-    # data1 = LETTERS[1:5] ; data2 = NULL ; n = 1e6 ; seed = NULL ; count.print = 1e3 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
-    # data1 = LETTERS[1:5] ; data2 = NULL ; n = 10 ; seed = 22 ; count.print = 10 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
-    # data1 = 101:110 ; data2 = 21:30 ; n = 10 ; seed = 22 ; count.print = 10 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
-    # data1 = 1:1e3 ; data2 = 1e3:1 ; n = 20 ; seed = 22 ; count.print = 1e6 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.5 ; warn.print = TRUE ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_round", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data1, class = "vector", fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & length(data1) < 2){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A VECTOR OF MINIMUM LENGTH 2. HERE IT IS: ", length(data1),"\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! is.null(data2)){
-        tempo <- fun_check(data = data1, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == TRUE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 MUST BE A NUMERIC VECTOR IF data2 ARGUMENT IS SPECIFIED\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        tempo <- fun_check(data = data2, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
-        if(length(data1) != length(data2)){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 AND data2 MUST BE VECTOR OF SAME LENGTH. HERE IT IS ", length(data1)," AND ", length(data2), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }else if(is.null(n)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT CANNOT BE NULL IF data2 ARGUMENT IS NULL\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! is.null(n)){
-        tempo <- fun_check(data = n, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(seed)){
-        tempo <- fun_check(data = seed, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = count.print, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = text.print, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = cor.method, options = c("pearson", "kendall", "spearman"), length =1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = cor.limit, class = "vector", mode = "numeric", prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = "lubridate", path.lib = path.lib)
-    # end package checking
-    # main code
-    # code that protects set.seed() in the global environment
-    # see also Protocol 100-rev0 Parallelization in R.docx
-    if(exists(".Random.seed", envir = .GlobalEnv)){ # if .Random.seed does not exists, it means that no random operation has been performed yet in any R environment
-        tempo.random.seed <- .Random.seed
-        on.exit(assign(".Random.seed", tempo.random.seed, env = .GlobalEnv))
-    }else{
-        on.exit(set.seed(NULL)) # inactivate seeding -> return to complete randomness
-    }
-    # end code that protects set.seed() in the global environment
-    if( ! is.null(seed)){
-        set.seed(seed)
-    }
-    ini.date <- Sys.time() # time of process begin, converted into seconds
-    ini.time <- as.numeric(ini.date) # time of process begin, converted into seconds
-    ini.pos <- 1:length(data1) # positions of data1 before permutation loops
-    tempo.pos <- ini.pos # positions of data1 that will be modified during loops
-    # pos.selec.seq <- ini.pos[-length(data1)] # selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
-    pos.selec.seq.max <- length(ini.pos) - 1 # max position (used by sample.int() function). See  below for - 1
-    warnings <- NULL
-    count <- 0
-    round <- 0
-    BREAK <- FALSE
-    tempo.cor <- 0
-    if(is.null(data2)){
-        if(length(table(data1)) == 1){
-            tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data1 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data1)))
-            warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
-        }else{
-            if(count.print > n){
-                count.print <- n
-            }
-            cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP OF ", n, " LOOPS INITIATED | LOOP COUNT: ", format(count, big.mark=",")))
-            count.print.loop <- logical(length = count.print)
-            count.print.loop[length(count.print.loop)] <- TRUE # not this to avoid long vector, but not forget to reset during printing: count.print.loop[(1:trunc(n / count.print) * count.print)] <- TRUE # counter to speedup
-            count.loop <- 0
-            pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-            tempo.date.loop <- Sys.time()
-            tempo.time.loop <- as.numeric(tempo.date.loop)
-            for(i3 in 1:n){
-                count.loop <- count.loop + 1
-                pos2 <- pos[count.loop] # selection of 1 position
-                tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                if(count.print.loop[count.loop]){
-                    count.loop <- 0
-                    pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
-                    tempo.time <- as.numeric(Sys.time())
-                    tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
-                    final.loop <- (tempo.time - tempo.time.loop) / i3 * n
-                    final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
-                    cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP ", i3, " / ", n, " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
-                }
-            }
-            count <- count + n # out of the loop to speedup
-            cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP ENDED | LOOP COUNT: ", format(count, big.mark=",")))
-            cat("\n\n")
-        }
-    }else{
-        if(length(table(data1)) == 1){
-            tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data1 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data1)))
-            warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
-            tempo.cor <- 1
-        }else if(length(table(data2)) == 1){
-            tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data2 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data2)))
-            warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
-            tempo.cor <- 1
-        }else{
-            cor.ini <- cor(x = data1, y = data2, use = "pairwise.complete.obs", method = cor.method)
-            tempo.cor <- cor.ini # correlation that will be modified during loops
-            neg.cor <- FALSE
-            if(tempo.cor < 0){
-                tempo.warnings <- paste0("INITIAL ", toupper(cor.method), " CORRELATION BETWEEN data1 AND data2 HAS BEEN DETECTED AS NEGATIVE: ", tempo.cor, ". THE LOOP STEPS WILL BE PERFORMED USING POSITIVE CORRELATIONS BUT THE FINAL CORRELATION WILL BE NEGATIVE")
-                warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
-                neg.cor <- TRUE
-                tempo.cor <- abs(tempo.cor)
-                cor.ini <- abs(cor.ini)
-            }
-            if(tempo.cor < cor.limit){ # randomize directly all the position to be close to correlation zero
-                tempo.warnings <- paste0("INITIAL ABSOLUTE VALUE OF THE ", toupper(cor.method), " CORRELATION ", fun_round(tempo.cor), " BETWEEN data1 AND data2 HAS BEEN DETECTED AS BELOW THE CORRELATION LIMIT PARAMETER ", cor.limit, "\nTHE data1 SEQUENCE HAS BEEN COMPLETELY RANDOMIZED TO CORRESPOND TO CORRELATION ZERO")
-                warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
-                for(i4 in 1:5){ # done 5 times to be sure of the complete randomness
-                    tempo.pos <- sample(x = tempo.pos, size = length(tempo.pos), replace = FALSE)
-                }
-                count <- count + 5 # out of the loop to speedup
-            }else{
-                # smallest correlation decrease
-                count <- count + 1 # 1 and not 0 because already 1 performed just below
-                pos <- sample.int(n = pos.selec.seq.max , size = 1, replace = TRUE) # selection of 1 position # pos.selec.seq.max  because selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
-                tempo.pos[c(pos + 1, pos)] <- tempo.pos[c(pos, pos + 1)]
-                tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
-                smallest.cor.dec <- cor.ini - tempo.cor
-                # end smallest correlation decrease
-                # going out of tempo.cor == cor.ini
-                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "CORRELATION DECREASE AFTER A SINGLE PERMUTATION: ", fun_round(smallest.cor.dec, 4)))
-                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP -> GOING OUT FROM EQUALITY | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
-                count.print.loop <- logical(length = count.print)
-                count.print.loop[length(count.print.loop)] <- TRUE # counter to speedup
-                count.loop <- 0 # 
-                pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                tempo.date.loop <- Sys.time()
-                tempo.time.loop <- as.numeric(tempo.date.loop)
-                while(tempo.cor == cor.ini){ # to be out of equality between tempo.cor and cor.ini at the beginning (only valid for very long vector)
-                    count <- count + 1
-                    count.loop <- count.loop + 1
-                    pos2 <- pos[count.loop]
-                    tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                    tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
-                    if(count.print.loop[count.loop]){
-                        count.loop <- 0
-                        pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
-                        tempo.time <- as.numeric(Sys.time())
-                        tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
-                        cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP", format(count.loop, big.mark=","), " / ? | COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TIME SPENT: ", tempo.lapse))
-                    }
-                }
-                tempo.time <- as.numeric(Sys.time())
-                tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time))
-                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP END | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TOTAL SPENT TIME: ", tempo.lapse))
-                if(tempo.cor < cor.limit){
-                    tempo.warnings <- paste0("THE FIRST FOR & WHILE LOOP STEPS HAVE BEEN TOO FAR AND SUBSEQUENT LOOP STEPS WILL NOT RUN")
-                    warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings)
-                }
-                # end going out of tempo.cor == cor.ini
-                # estimation of the average correlation decrease per loop on x loops and for loop execution
-                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE/FOR LOOPS INITIATION | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
-                count.est <- 1e5
-                first.round <- TRUE
-                GOBACK <- FALSE
-                while(tempo.cor > cor.limit){
-                    round <- round + 1
-                    # estimation step
-                    if(first.round == TRUE){
-                        first.round <- FALSE
-                        cor.dec.per.loop <- numeric(length = 5)
-                        loop.nb.est <- Inf
-                        cor.est.ini <- tempo.cor
-                        cor.est <- numeric(length = 5)
-                        for(i6 in 1:5){ # connected to cor.dec.per.loop
-                            tempo.pos.est <- tempo.pos
-                            pos <- sample.int(n = pos.selec.seq.max , size = count.est, replace = TRUE) # selection of n position
-                            for(i7 in 1:count.est){
-                                pos2 <- pos[i7] # selection of 1 position
-                                tempo.pos.est[c(pos2 + 1, pos2)] <- tempo.pos.est[c(pos2, pos2 + 1)]
-                            }
-                            tempo.cor.est <- abs(cor(x = data1[tempo.pos.est], y = data2, use = "pairwise.complete.obs", method = cor.method))
-                            cor.est[i6] <- tempo.cor.est
-                            tempo.cor.dec.per.loop <- (cor.est.ini - tempo.cor.est) / count.est # correlation decrease per loop
-                            if(is.na(tempo.cor.dec.per.loop) | ! is.finite(tempo.cor.dec.per.loop)){
-                                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\ncor.est.ini: ", cor.est.ini, "\ntempo.cor.est: ", tempo.cor.est, "\n\n============\n\n"))
-                                stop(tempo.cat)
-                            }
-                            cor.dec.per.loop[i6] <- tempo.cor.dec.per.loop
-                        }
-                        cor.est <- cor.est[which.max(cor.dec.per.loop)] # max to avoid to go to far with for loop (tempo.cor below tempo.limit)
-                        cor.dec.per.loop <- max(cor.dec.per.loop, na.rm = TRUE) # max to avoid to go to far with for loop (tempo.cor below tempo.limit)
-                        loop.nb.est <- round((tempo.cor - cor.limit) / cor.dec.per.loop)
-                    }else{
-                        if(GOBACK == TRUE){
-                            loop.nb.est <- round(loop.nb.est / 2)
-                        }else{
-                            cor.dec.per.loop <- (cor.ini - tempo.cor) / count
-                            loop.nb.est <- round((tempo.cor - cor.limit) / cor.dec.per.loop)
-                        }
-                    }
-                    # end estimation step
-                    # loop step
-                    if(is.na(loop.nb.est) | ! is.finite(loop.nb.est)){
-                        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\nloop.nb.est: ", loop.nb.est, "\ncor.ini: ", cor.ini, "\ntempo.cor: ", tempo.cor, "\ncor.limit: ", cor.limit, "\ncor.dec.per.loop: ", cor.dec.per.loop, "\n\n============\n\n"))
-                        stop(tempo.cat)
-                    }else if(loop.nb.est > 1e4){ # below -> leave the while loop
-                        tempo.pos.secu <- tempo.pos
-                        count.secu <- count
-                        tempo.cor.secu <- tempo.cor
-                        cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "INITIAL SETTINGS BEFORE ROUND: ", round, " | LOOP COUNT: ", format(count, big.mark=","), " | GO BACK: ", GOBACK, " | LOOP NUMBER ESTIMATION: ", format(loop.nb.est, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
-                        count.print.loop <- logical(length = count.print)
-                        count.print.loop[length(count.print.loop)] <- TRUE # not this to avoid long vector, but not forget to reset during printing: count.print.loop[(1:trunc(n / count.print) * count.print)] <- TRUE # counter to speedup
-                        count.loop <- 0
-                        pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                        tempo.date.loop <- Sys.time()
-                        tempo.time.loop <- as.numeric(tempo.date.loop)
-                        for(i6 in 1:loop.nb.est){
-                            count.loop <- count.loop + 1
-                            pos2 <- pos[count.loop] # selection of 1 position
-                            tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                            if(count.print.loop[count.loop]){
-                                count.loop <- 0
-                                pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
-                                tempo.time <- as.numeric(Sys.time())
-                                tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
-                                final.loop <- (tempo.time - tempo.time.loop) / i6 * loop.nb.est # intra nb.compar loop lapse: time lapse / cycles done * cycles remaining
-                                final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
-                                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP | ROUND ", round, " | LOOP: ", format(i6, big.mark=","), " / ", format(loop.nb.est, big.mark=","), " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
-                            }
-                        }
-                        count <- count + loop.nb.est # out of the loop to speedup
-                        tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
-                        if(tempo.cor > tempo.cor.secu | ((tempo.cor - cor.limit) < 0 & abs(tempo.cor - cor.limit) > smallest.cor.dec * round(log10(max(ini.pos, na.rm = TRUE))))){
-                            GOBACK <- TRUE
-                            tempo.pos <- tempo.pos.secu
-                            count <- count.secu
-                            tempo.cor <- tempo.cor.secu
-                        }else{
-                            GOBACK <- FALSE
-                        }
-                    }else{
-                        cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FINAL WHILE LOOP | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
-                        count.print.loop <- logical(length = count.print)
-                        count.print.loop[length(count.print.loop)] <- TRUE # counter to speedup
-                        count.loop <- 0 # 
-                        pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                        tempo.cor.loop <- tempo.cor
-                        tempo.date.loop <- Sys.time()
-                        tempo.time.loop <- as.numeric(tempo.date.loop)
-                        while(tempo.cor > cor.limit){
-                            count <- count + 1
-                            count.loop <- count.loop + 1
-                            pos2 <- pos[count.loop]
-                            tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
-                            tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
-                            if(count.print.loop[count.loop]){
-                                count.loop <- 0
-                                pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
-                                tempo.time <- as.numeric(Sys.time())
-                                tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
-                                final.loop <- (tempo.time - tempo.time.loop) / (tempo.cor.loop - tempo.cor) * (tempo.cor - cor.limit) # tempo.cor.loop - tempo.cor always positive and tempo.cor decreases progressively starting from tempo.cor.loop
-                                final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
-                                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE LOOP | LOOP NB: ", format(count.loop, big.mark=","), " | COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
-                            }
-                        }
-                    }
-                }
-                tempo.time <- as.numeric(Sys.time())
-                tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time))
-                cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE/FOR LOOPS END | LOOP COUNT: ", format(count, big.mark=","), " | NB OF ROUNDS: ", round, " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TOTAL SPENT TIME: ", tempo.lapse))
-            }
-            tempo.cor <- ifelse(neg.cor == TRUE, -tempo.cor, tempo.cor)
-        }
-    }
-    cat("\n\n")
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-        cat("\n\n")
-    }
-    output <- list(data = data1[tempo.pos], warnings = warnings, cor = if(is.null(data2)){cor(ini.pos, tempo.pos, method = "spearman")}else{tempo.cor}, count = count)
-    return(output)
+# AIM
+# reorder the elements of the data1 vector by flipping 2 randomly selected  consecutive positions either:
+# 1) n times (when n is precised) or
+# 2) until the correlation between data1 and data2 decreases down to the cor.limit (0.2 by default). See cor.limit below to deal with negative correlations
+# Example of consecutive position flipping: ABCD -> BACD -> BADC, etc.
+# WARNINGS
+# see # https://www.r-bloggers.com/strategies-to-speedup-r-code/ for code speedup
+# the random switch of non consecutive positions (ABCD -> DBCA for instance) does not work very well as the correaltion is quickly obtained but the initial vector structure is mainly kept (no much order). Ths code would be: pos <- ini.pos[1:2] ; pos <- sample.int(n = n , size = 2, replace = FALSE) ; tempo.pos[pos] <- tempo.pos[rev(pos)]
+# ARGUMENTS
+# data1: a vector of at least 2 elements. Must be numeric if data2 is specified
+# data2: a numeric vector of same length as data1
+# n: number of times "flipping 2 randomly selected consecutive positions". Ignored if data2 is specified
+# seed: integer number used by set.seed(). Write NULL if random result is required, an integer otherwise. BEWARE: if not NULL, fun_permut() will systematically return the same result when the other parameters keep the same settings
+# count.print: interger value. Print a working progress message every count.print during loops. BEWARE: can increase substentially the time to complete the process using a small value, like 10 for instance. Use Inf is no loop message desired
+# text.print: optional message to add to the working progress message every count.print loop
+# cor.method: correlation method. Either "pearson", "kendall" or "spearman". Ignored if data2 is not specified
+# cor.limit: a correlation limit (between 0 and 1). Ignored if data2 is not specified. Compute the correlation between data1 and data2, permute the data1 values, and stop the permutation process when the correlation between data1 and data2 decreases down below the cor limit value (0.2 by default). If cor(data1, data2) is negative, then -cor.limit is used and the process stops until the correlation between data1 and data2 increases up over cor.limit (-0.2 by default). BEWARE: write a positive cor.limit even if cor(data1, data2) is known to be negative. The function will automatically uses -cor.limit. If the initial correlation is already below cor.limit (positive correlation) or over -cor.limit (negative correlation), then the data1 value positions are completely randomized (correlation between data1 and data2 is expected to be 0)
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# lubridate
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_pack()
+# fun_round()
+# RETURN
+# a list containing:
+# $data: the modified vector
+# $warnings: potential warning messages (in case of negative correlation when data2 is specified). NULL if non warning message
+# $cor: a spearman correlation between the initial positions (1:length(data1) and the final positions if data2 is not specified and the final correlation between data1 and data2 otherwise, according to cor.method
+# $count: the number of loops used
+# EXAMPLES
+# example (1) showing that for loop, used in fun_permut(), is faster than while loop
+# ini.time <- as.numeric(Sys.time()) ; count <- 0 ; for(i0 in 1:1e9){count <- count + 1} ; tempo.time <- as.numeric(Sys.time()) ; tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time)) ; tempo.lapse
+# example (2) showing that for loop, used in fun_permut(), is faster than while loop
+# ini.time <- as.numeric(Sys.time()) ; count <- 0 ; while(count < 1e9){count <- count + 1} ; tempo.time <- as.numeric(Sys.time()) ; tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time)) ; tempo.lapse
+# fun_permut(data1 = LETTERS[1:5], data2 = NULL, n = 100, seed = 1, count.print = 10, text.print = "CPU NB 4")
+# fun_permut(data1 = 101:110, data2 = 21:30, seed = 1, count.print = 1e4, text.print = "", cor.method = "spearman", cor.limit = 0.2)
+# a way to use the cor.limit argument just considering data1
+# obs1 <- 101:110 ; fun_permut(data1 = obs1, data2 = obs1, seed = 1, count.print = 10, cor.method = "spearman", cor.limit = 0.2)
+# fun_permut(data1 = 1:1e3, data2 = 1e3:1, seed = 1, count.print = 1e6, text.print = "", cor.method = "spearman", cor.limit = 0.7)
+# fun_permut(data1 = 1:1e2, data2 = 1e2:1, seed = 1, count.print = 1e3, cor.limit = 0.5)
+# fun_permut(data1 = c(0,0,0,0,0), n = 5, data2 = NULL, seed = 1, count.print = 1e3, cor.limit = 0.5)
+# DEBUGGING
+# data1 = LETTERS[1:5] ; data2 = NULL ; n = 1e6 ; seed = NULL ; count.print = 1e3 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
+# data1 = LETTERS[1:5] ; data2 = NULL ; n = 10 ; seed = 22 ; count.print = 10 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
+# data1 = 101:110 ; data2 = 21:30 ; n = 10 ; seed = 22 ; count.print = 10 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; warn.print = TRUE ; path.lib = NULL
+# data1 = 1:1e3 ; data2 = 1e3:1 ; n = 20 ; seed = 22 ; count.print = 1e6 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.5 ; warn.print = TRUE ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_round", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data1, class = "vector", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & length(data1) < 2){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A VECTOR OF MINIMUM LENGTH 2. HERE IT IS: ", length(data1),"\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(data2)){
+tempo <- fun_check(data = data1, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
+if(tempo$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 MUST BE A NUMERIC VECTOR IF data2 ARGUMENT IS SPECIFIED\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = data2, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
+if(length(data1) != length(data2)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 AND data2 MUST BE VECTOR OF SAME LENGTH. HERE IT IS ", length(data1)," AND ", length(data2), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}else if(is.null(n)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT CANNOT BE NULL IF data2 ARGUMENT IS NULL\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(n)){
+tempo <- fun_check(data = n, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(seed)){
+tempo <- fun_check(data = seed, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = count.print, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = text.print, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = cor.method, options = c("pearson", "kendall", "spearman"), length =1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = cor.limit, class = "vector", mode = "numeric", prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+tempo.cat <- paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = "lubridate", path.lib = path.lib)
+# end package checking
+# main code
+# code that protects set.seed() in the global environment
+# see also Protocol 100-rev0 Parallelization in R.docx
+if(exists(".Random.seed", envir = .GlobalEnv)){ # if .Random.seed does not exists, it means that no random operation has been performed yet in any R environment
+tempo.random.seed <- .Random.seed
+on.exit(assign(".Random.seed", tempo.random.seed, env = .GlobalEnv))
+}else{
+on.exit(set.seed(NULL)) # inactivate seeding -> return to complete randomness
+}
+# end code that protects set.seed() in the global environment
+if( ! is.null(seed)){
+set.seed(seed)
+}
+ini.date <- Sys.time() # time of process begin, converted into seconds
+ini.time <- as.numeric(ini.date) # time of process begin, converted into seconds
+ini.pos <- 1:length(data1) # positions of data1 before permutation loops
+tempo.pos <- ini.pos # positions of data1 that will be modified during loops
+# pos.selec.seq <- ini.pos[-length(data1)] # selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
+pos.selec.seq.max <- length(ini.pos) - 1 # max position (used by sample.int() function). See  below for - 1
+warnings <- NULL
+count <- 0
+round <- 0
+BREAK <- FALSE
+tempo.cor <- 0
+if(is.null(data2)){
+if(length(table(data1)) == 1){
+tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data1 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data1)))
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
+}else{
+if(count.print > n){
+count.print <- n
+}
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP OF ", n, " LOOPS INITIATED | LOOP COUNT: ", format(count, big.mark=",")))
+count.print.loop <- logical(length = count.print)
+count.print.loop[length(count.print.loop)] <- TRUE # not this to avoid long vector, but not forget to reset during printing: count.print.loop[(1:trunc(n / count.print) * count.print)] <- TRUE # counter to speedup
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.date.loop <- Sys.time()
+tempo.time.loop <- as.numeric(tempo.date.loop)
+for(i3 in 1:n){
+count.loop <- count.loop + 1
+pos2 <- pos[count.loop] # selection of 1 position
+tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+if(count.print.loop[count.loop]){
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
+final.loop <- (tempo.time - tempo.time.loop) / i3 * n
+final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP ", i3, " / ", n, " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
+}
+}
+count <- count + n # out of the loop to speedup
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP ENDED | LOOP COUNT: ", format(count, big.mark=",")))
+cat("\n\n")
+}
+}else{
+if(length(table(data1)) == 1){
+tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data1 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data1)))
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
+tempo.cor <- 1
+}else if(length(table(data2)) == 1){
+tempo.warnings <- paste0("NO PERMUTATION PERFORMED BECAUSE data2 ARGUMENT SEEMS TO BE MADE OF IDENTICAL ELEMENTS: ", names(table(data2)))
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
+tempo.cor <- 1
+}else{
+cor.ini <- cor(x = data1, y = data2, use = "pairwise.complete.obs", method = cor.method)
+tempo.cor <- cor.ini # correlation that will be modified during loops
+neg.cor <- FALSE
+if(tempo.cor < 0){
+tempo.warnings <- paste0("INITIAL ", toupper(cor.method), " CORRELATION BETWEEN data1 AND data2 HAS BEEN DETECTED AS NEGATIVE: ", tempo.cor, ". THE LOOP STEPS WILL BE PERFORMED USING POSITIVE CORRELATIONS BUT THE FINAL CORRELATION WILL BE NEGATIVE")
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
+neg.cor <- TRUE
+tempo.cor <- abs(tempo.cor)
+cor.ini <- abs(cor.ini)
+}
+if(tempo.cor < cor.limit){ # randomize directly all the position to be close to correlation zero
+tempo.warnings <- paste0("INITIAL ABSOLUTE VALUE OF THE ", toupper(cor.method), " CORRELATION ", fun_round(tempo.cor), " BETWEEN data1 AND data2 HAS BEEN DETECTED AS BELOW THE CORRELATION LIMIT PARAMETER ", cor.limit, "\nTHE data1 SEQUENCE HAS BEEN COMPLETELY RANDOMIZED TO CORRESPOND TO CORRELATION ZERO")
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) #
+for(i4 in 1:5){ # done 5 times to be sure of the complete randomness
+tempo.pos <- sample(x = tempo.pos, size = length(tempo.pos), replace = FALSE)
+}
+count <- count + 5 # out of the loop to speedup
+}else{
+# smallest correlation decrease
+count <- count + 1 # 1 and not 0 because already 1 performed just below
+pos <- sample.int(n = pos.selec.seq.max , size = 1, replace = TRUE) # selection of 1 position # pos.selec.seq.max  because selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
+tempo.pos[c(pos + 1, pos)] <- tempo.pos[c(pos, pos + 1)]
+tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
+smallest.cor.dec <- cor.ini - tempo.cor
+# end smallest correlation decrease
+# going out of tempo.cor == cor.ini
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "CORRELATION DECREASE AFTER A SINGLE PERMUTATION: ", fun_round(smallest.cor.dec, 4)))
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP -> GOING OUT FROM EQUALITY | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
+count.print.loop <- logical(length = count.print)
+count.print.loop[length(count.print.loop)] <- TRUE # counter to speedup
+count.loop <- 0 # 
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.date.loop <- Sys.time()
+tempo.time.loop <- as.numeric(tempo.date.loop)
+while(tempo.cor == cor.ini){ # to be out of equality between tempo.cor and cor.ini at the beginning (only valid for very long vector)
+count <- count + 1
+count.loop <- count.loop + 1
+pos2 <- pos[count.loop]
+tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
+if(count.print.loop[count.loop]){
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP", format(count.loop, big.mark=","), " / ? | COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TIME SPENT: ", tempo.lapse))
+}
+}
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time))
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FIRST WHILE LOOP STEP END | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TOTAL SPENT TIME: ", tempo.lapse))
+if(tempo.cor < cor.limit){
+tempo.warnings <- paste0("THE FIRST FOR & WHILE LOOP STEPS HAVE BEEN TOO FAR AND SUBSEQUENT LOOP STEPS WILL NOT RUN")
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings)
+}
+# end going out of tempo.cor == cor.ini
+# estimation of the average correlation decrease per loop on x loops and for loop execution
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE/FOR LOOPS INITIATION | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
+count.est <- 1e5
+first.round <- TRUE
+GOBACK <- FALSE
+while(tempo.cor > cor.limit){
+round <- round + 1
+# estimation step
+if(first.round == TRUE){
+first.round <- FALSE
+cor.dec.per.loop <- numeric(length = 5)
+loop.nb.est <- Inf
+cor.est.ini <- tempo.cor
+cor.est <- numeric(length = 5)
+for(i6 in 1:5){ # connected to cor.dec.per.loop
+tempo.pos.est <- tempo.pos
+pos <- sample.int(n = pos.selec.seq.max , size = count.est, replace = TRUE) # selection of n position
+for(i7 in 1:count.est){
+pos2 <- pos[i7] # selection of 1 position
+tempo.pos.est[c(pos2 + 1, pos2)] <- tempo.pos.est[c(pos2, pos2 + 1)]
+}
+tempo.cor.est <- abs(cor(x = data1[tempo.pos.est], y = data2, use = "pairwise.complete.obs", method = cor.method))
+cor.est[i6] <- tempo.cor.est
+tempo.cor.dec.per.loop <- (cor.est.ini - tempo.cor.est) / count.est # correlation decrease per loop
+if(is.na(tempo.cor.dec.per.loop) | ! is.finite(tempo.cor.dec.per.loop)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\ncor.est.ini: ", cor.est.ini, "\ntempo.cor.est: ", tempo.cor.est, "\n\n============\n\n"))
+stop(tempo.cat)
+}
+cor.dec.per.loop[i6] <- tempo.cor.dec.per.loop
+}
+cor.est <- cor.est[which.max(cor.dec.per.loop)] # max to avoid to go to far with for loop (tempo.cor below tempo.limit)
+cor.dec.per.loop <- max(cor.dec.per.loop, na.rm = TRUE) # max to avoid to go to far with for loop (tempo.cor below tempo.limit)
+loop.nb.est <- round((tempo.cor - cor.limit) / cor.dec.per.loop)
+}else{
+if(GOBACK == TRUE){
+loop.nb.est <- round(loop.nb.est / 2)
+}else{
+cor.dec.per.loop <- (cor.ini - tempo.cor) / count
+loop.nb.est <- round((tempo.cor - cor.limit) / cor.dec.per.loop)
+}
+}
+# end estimation step
+# loop step
+if(is.na(loop.nb.est) | ! is.finite(loop.nb.est)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\nloop.nb.est: ", loop.nb.est, "\ncor.ini: ", cor.ini, "\ntempo.cor: ", tempo.cor, "\ncor.limit: ", cor.limit, "\ncor.dec.per.loop: ", cor.dec.per.loop, "\n\n============\n\n"))
+stop(tempo.cat)
+}else if(loop.nb.est > 1e4){ # below -> leave the while loop
+tempo.pos.secu <- tempo.pos
+count.secu <- count
+tempo.cor.secu <- tempo.cor
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "INITIAL SETTINGS BEFORE ROUND: ", round, " | LOOP COUNT: ", format(count, big.mark=","), " | GO BACK: ", GOBACK, " | LOOP NUMBER ESTIMATION: ", format(loop.nb.est, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
+count.print.loop <- logical(length = count.print)
+count.print.loop[length(count.print.loop)] <- TRUE # not this to avoid long vector, but not forget to reset during printing: count.print.loop[(1:trunc(n / count.print) * count.print)] <- TRUE # counter to speedup
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.date.loop <- Sys.time()
+tempo.time.loop <- as.numeric(tempo.date.loop)
+for(i6 in 1:loop.nb.est){
+count.loop <- count.loop + 1
+pos2 <- pos[count.loop] # selection of 1 position
+tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+if(count.print.loop[count.loop]){
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
+final.loop <- (tempo.time - tempo.time.loop) / i6 * loop.nb.est # intra nb.compar loop lapse: time lapse / cycles done * cycles remaining
+final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FOR LOOP | ROUND ", round, " | LOOP: ", format(i6, big.mark=","), " / ", format(loop.nb.est, big.mark=","), " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
+}
+}
+count <- count + loop.nb.est # out of the loop to speedup
+tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
+if(tempo.cor > tempo.cor.secu | ((tempo.cor - cor.limit) < 0 & abs(tempo.cor - cor.limit) > smallest.cor.dec * round(log10(max(ini.pos, na.rm = TRUE))))){
+GOBACK <- TRUE
+tempo.pos <- tempo.pos.secu
+count <- count.secu
+tempo.cor <- tempo.cor.secu
+}else{
+GOBACK <- FALSE
+}
+}else{
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "FINAL WHILE LOOP | LOOP COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4)))
+count.print.loop <- logical(length = count.print)
+count.print.loop[length(count.print.loop)] <- TRUE # counter to speedup
+count.loop <- 0 # 
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # selection of random positions. BEWARE: n = pos.selec.seq.max because already - 1 (see above) but is connected to tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.cor.loop <- tempo.cor
+tempo.date.loop <- Sys.time()
+tempo.time.loop <- as.numeric(tempo.date.loop)
+while(tempo.cor > cor.limit){
+count <- count + 1
+count.loop <- count.loop + 1
+pos2 <- pos[count.loop]
+tempo.pos[c(pos2 + 1, pos2)] <- tempo.pos[c(pos2, pos2 + 1)]
+tempo.cor <- abs(cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method))
+if(count.print.loop[count.loop]){
+count.loop <- 0
+pos <- sample.int(n = pos.selec.seq.max , size = count.print, replace = TRUE) # BEWARE: never forget to resample here
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - tempo.time.loop))
+final.loop <- (tempo.time - tempo.time.loop) / (tempo.cor.loop - tempo.cor) * (tempo.cor - cor.limit) # tempo.cor.loop - tempo.cor always positive and tempo.cor decreases progressively starting from tempo.cor.loop
+final.exp <- as.POSIXct(final.loop, origin = tempo.date.loop)
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE LOOP | LOOP NB: ", format(count.loop, big.mark=","), " | COUNT: ", format(count, big.mark=","), " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TIME SPENT: ", tempo.lapse, " | EXPECTED END: ", final.exp))
+}
+}
+}
+}
+tempo.time <- as.numeric(Sys.time())
+tempo.lapse <- round(lubridate::seconds_to_period(tempo.time - ini.time))
+cat(paste0("\n", ifelse(text.print == "", "", paste0(text.print, " | ")), "WHILE/FOR LOOPS END | LOOP COUNT: ", format(count, big.mark=","), " | NB OF ROUNDS: ", round, " | CORRELATION LIMIT: ", fun_round(cor.limit, 4), " | ABS TEMPO CORRELATION: ", fun_round(tempo.cor, 4), " | TOTAL SPENT TIME: ", tempo.lapse))
+}
+tempo.cor <- ifelse(neg.cor == TRUE, -tempo.cor, tempo.cor)
+}
+}
+cat("\n\n")
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+cat("\n\n")
+}
+output <- list(data = data1[tempo.pos], warnings = warnings, cor = if(is.null(data2)){cor(ini.pos, tempo.pos, method = "spearman")}else{tempo.cor}, count = count)
+return(output)
 }
 
 
@@ -2547,60 +2552,60 @@ fun_permut <- function(data1, data2 = NULL, n = NULL, seed = NULL, count.print =
 
 # Check OK: clear to go Apollo
 fun_width <- function(class.nb, inches.per.class.nb = 1, ini.window.width = 7, inch.left.space, inch.right.space, boundarie.space = 0.5){
-    # AIM
-    # rescale the width of a window to open depending on the number of classes to plot
-    # can be used for height, considering that it is as if it was a width
-    # this order can be used:
-    # fun_width()
-    # fun_open()
-    # fun_prior_plot() # not for ggplot2
-    # plot() or any other plotting
-    # fun_post_plot() if fun_prior_plot() has been used # not for ggplot2
-    # fun_close()
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # class.nb: number of class to plot
-    # inches.per.class.nb: number of inches per unit of class.nb. 2 means 2 inches for each boxplot for instance
-    # ini.window.width:initial window width in inches
-    # inch.left.space: left horizontal margin of the figure region (in inches)
-    # inch.right.space: right horizontal margin of the figure region (in inches)
-    # boundarie.space: space between the right and left limits of the plotting region and the plot (0.5 means half a class width)
-    # RETURN
-    # the new window width in inches
-    # EXAMPLES
-    # fun_width(class.nb = 10, inches.per.class.nb = 0.2, ini.window.width = 7, inch.left.space = 1, inch.right.space = 1, boundarie.space = 0.5)
-    # DEBUGGING
-    # class.nb = 10 ; inches.per.class.nb = 0.2 ; ini.window.width = 7 ; inch.left.space = 1 ; inch.right.space = 1 ; boundarie.space = 0.5 # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = class.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = inches.per.class.nb, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = ini.window.width, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = inch.left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = inch.right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = boundarie.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    range.max <- class.nb + boundarie.space # the max range of the future plot
-    range.min <- boundarie.space # the min range of the future plot
-    window.width <- inch.left.space + inch.right.space + inches.per.class.nb * (range.max - range.min)
-    return(window.width)
+# AIM
+# rescale the width of a window to open depending on the number of classes to plot
+# can be used for height, considering that it is as if it was a width
+# this order can be used:
+# fun_width()
+# fun_open()
+# fun_prior_plot() # not for ggplot2
+# plot() or any other plotting
+# fun_post_plot() if fun_prior_plot() has been used # not for ggplot2
+# fun_close()
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# class.nb: number of class to plot
+# inches.per.class.nb: number of inches per unit of class.nb. 2 means 2 inches for each boxplot for instance
+# ini.window.width:initial window width in inches
+# inch.left.space: left horizontal margin of the figure region (in inches)
+# inch.right.space: right horizontal margin of the figure region (in inches)
+# boundarie.space: space between the right and left limits of the plotting region and the plot (0.5 means half a class width)
+# RETURN
+# the new window width in inches
+# EXAMPLES
+# fun_width(class.nb = 10, inches.per.class.nb = 0.2, ini.window.width = 7, inch.left.space = 1, inch.right.space = 1, boundarie.space = 0.5)
+# DEBUGGING
+# class.nb = 10 ; inches.per.class.nb = 0.2 ; ini.window.width = 7 ; inch.left.space = 1 ; inch.right.space = 1 ; boundarie.space = 0.5 # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = class.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = inches.per.class.nb, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = ini.window.width, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = inch.left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = inch.right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = boundarie.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+range.max <- class.nb + boundarie.space # the max range of the future plot
+range.min <- boundarie.space # the min range of the future plot
+window.width <- inch.left.space + inch.right.space + inches.per.class.nb * (range.max - range.min)
+return(window.width)
 }
 
 
@@ -2609,142 +2614,142 @@ fun_width <- function(class.nb, inches.per.class.nb = 1, ini.window.width = 7, i
 
 # Check OK: clear to go Apollo
 fun_open <- function(pdf.disp = TRUE, path.fun = "working.dir", pdf.name.file = "graph", width.fun = 7, height.fun = 7, paper = "special", no.pdf.overwrite = TRUE, return.output = FALSE){
-    # AIM
-    # open a pdf or screen (GUI) graphic window
-    # BEWARE: on Linux, use pdf.disp = TRUE, if (GUI) graphic window is not always available, meaning that X is not installed (clusters for instance). Use X11() in R to test if available
-    # this order can be used:
-    # fun_width()
-    # fun_open()
-    # fun_prior_plot() # not for ggplot2
-    # plot() or any other plotting
-    # fun_post_plot() if fun_prior_plot() has been used # not for ggplot2
-    # fun_close()
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS:
-    # pdf.disp: use pdf or not
-    # path.fun: where the pdf is saved (do not terminate by / or \\). Write "working.dir" if working directory is required (default)
-    # pdf.name.file: name of the pdf file containing the graphs (the .pdf extension is added by the function)
-    # width.fun: width of the windows (in inches)
-    # height.fun: height of the windows (in inches)
-    # paper: paper argument of the pdf function (paper format). Only used for pdf(). Either "a4", "letter", "legal", "us", "executive", "a4r", "USr" or "special". If "special", means that width.fun and height.fun specify the paper size
-    # no.pdf.overwrite: existing pdf can be overwritten ? Only used if pdf.disp = TRUE
-    # return.output: return output ? If TRUE but function not assigned, the output list is displayed
-    # RETURN
-    # a list containing:
-    # $pdf.loc: path of the pdf created
-    # $ini.par: initial par() parameters (to reset in a new graph)
-    # $zone.ini: initial window spliting (to reset in a new graph)
-    # EXAMPLES
-    # fun_open(pdf.disp = FALSE, path.fun = "C:/Users/Gael/Desktop", pdf.name.file = "graph", width.fun = 7, height.fun = 7, paper = "special", no.pdf.overwrite = TRUE, return.output = TRUE)
-    # DEBUGGING
-    # pdf.disp = TRUE ; path.fun = "C:/Users/Gael/Desktop" ; pdf.name.file = "graphs" ; width.fun = 7 ; height.fun = 7 ; paper = "special" ; no.pdf.overwrite = TRUE ; return.output = TRUE # for function debugging
-    # pdf.disp = TRUE ; path.fun = "/pasteur/homes/gmillot/" ; pdf.name.file = "graphs" ; width.fun = 7 ; height.fun = 7 ; paper = "special" ; no.pdf.overwrite = TRUE ; return.output = TRUE # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = pdf.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = pdf.name.file, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = width.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = height.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = paper, options = c("a4", "letter", "legal", "us", "executive", "a4r", "USr", "special", "A4", "LETTER", "LEGAL", "US"), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data =no.pdf.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = return.output, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    if(path.fun == "working.dir"){
-        path.fun <- getwd()
-    }else{
-        if(grepl(x = path.fun, pattern = ".+/$")){
-            path.fun <- substr(path.fun, 1, nchar(path.fun) - 1) # remove the last /
-        }
-        if(dir.exists(path.fun) == FALSE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": path.fun ARGUMENT DOES NOT CORRESPOND TO EXISTING DIRECTORY\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
-        open.fail <- NULL
-        windows()
-        ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-        invisible(dev.off()) # close the new window
-    }else if(Sys.info()["sysname"] == "Linux"){
-        if(pdf.disp == TRUE){
-            if(file.exists(paste0(path.fun, "/recover_ini_par.pdf"))){
-                tempo.cat <- paste0("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT BE USED ON LINUX IF A recover_ini_par.pdf FILE ALREADY EXISTS HERE: ", paste(path.fun, collapse = " "), "\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                pdf(width = width.fun, height = height.fun, file=paste0(path.fun, "/recover_ini_par.pdf"), paper = paper)
-                ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-                invisible(dev.off()) # close the pdf windows
-                file.remove(paste0(path.fun, "/recover_ini_par.pdf")) # remove the pdf file
-            }
-        }else{
-            # test if X11 can be opened
-            if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED ON LINUX IF A Rplots.pdf FILE ALREADY EXISTS HERE: ", getwd(), "\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                open.fail <- suppressWarnings(try(X11(), silent = TRUE))[] # try to open a X11 window. If open.fail == NULL, no problem, meaning that the X11 window is opened. If open.fail != NULL, a pdf can be opened here paste0(getwd(), "/Rplots.pdf")
-                if(is.null(open.fail)){
-                    ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-                    invisible(dev.off()) # close the new window
-                }else if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
-                    file.remove(paste0(getwd(), "/Rplots.pdf")) # remove the pdf file
-                    tempo.cat <- ("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE SET pdf.disp ARGUMENT TO TRUE AND RERUN\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-            }
-        }
-    }else{
-        open.fail <- NULL
-        quartz()
-        ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-        invisible(dev.off()) # close the new window
-    }
-    zone.ini <- matrix(1, ncol=1) # to recover the initial parameters for next figure region when device region split into several figure regions
-    if(pdf.disp == TRUE){
-        pdf.loc <- paste0(path.fun, "/", pdf.name.file, ".pdf")
-        if(file.exists(pdf.loc) == TRUE & no.pdf.overwrite == TRUE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": pdf.loc FILE ALREADY EXISTS AND CANNOT BE OVERWRITTEN DUE TO no.pdf.overwrite ARGUMENT SET TO TRUE: ", pdf.loc, "\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            pdf(width = width.fun, height = height.fun, file=pdf.loc, paper = paper)
-        }
-    }else if(pdf.disp == FALSE){
-        pdf.loc <- NULL
-        if(Sys.info()["sysname"] == "Windows"){ # .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
-            windows(width = width.fun, height = height.fun, rescale="fixed")
-        }else if(Sys.info()["sysname"] == "Linux"){
-            if( ! is.null(open.fail)){
-                stop("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE SET pdf.disp ARGUMENT TO TRUE AND RERUN\n\n================\n\n")
-            }else{
-                X11(width = width.fun, height = height.fun)
-            }
-        }else{
-            quartz(width = width.fun, height = height.fun)
-        }
-    }
-    if(return.output == TRUE){
-        output <- list(pdf.loc = pdf.loc, ini.par = ini.par, zone.ini = zone.ini)
-        return(output)
-    }
+# AIM
+# open a pdf or screen (GUI) graphic window
+# BEWARE: on Linux, use pdf.disp = TRUE, if (GUI) graphic window is not always available, meaning that X is not installed (clusters for instance). Use X11() in R to test if available
+# this order can be used:
+# fun_width()
+# fun_open()
+# fun_prior_plot() # not for ggplot2
+# plot() or any other plotting
+# fun_post_plot() if fun_prior_plot() has been used # not for ggplot2
+# fun_close()
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS:
+# pdf.disp: use pdf or not
+# path.fun: where the pdf is saved (do not terminate by / or \\). Write "working.dir" if working directory is required (default)
+# pdf.name.file: name of the pdf file containing the graphs (the .pdf extension is added by the function)
+# width.fun: width of the windows (in inches)
+# height.fun: height of the windows (in inches)
+# paper: paper argument of the pdf function (paper format). Only used for pdf(). Either "a4", "letter", "legal", "us", "executive", "a4r", "USr" or "special". If "special", means that width.fun and height.fun specify the paper size
+# no.pdf.overwrite: existing pdf can be overwritten ? Only used if pdf.disp = TRUE
+# return.output: return output ? If TRUE but function not assigned, the output list is displayed
+# RETURN
+# a list containing:
+# $pdf.loc: path of the pdf created
+# $ini.par: initial par() parameters (to reset in a new graph)
+# $zone.ini: initial window spliting (to reset in a new graph)
+# EXAMPLES
+# fun_open(pdf.disp = FALSE, path.fun = "C:/Users/Gael/Desktop", pdf.name.file = "graph", width.fun = 7, height.fun = 7, paper = "special", no.pdf.overwrite = TRUE, return.output = TRUE)
+# DEBUGGING
+# pdf.disp = TRUE ; path.fun = "C:/Users/Gael/Desktop" ; pdf.name.file = "graphs" ; width.fun = 7 ; height.fun = 7 ; paper = "special" ; no.pdf.overwrite = TRUE ; return.output = TRUE # for function debugging
+# pdf.disp = TRUE ; path.fun = "/pasteur/homes/gmillot/" ; pdf.name.file = "graphs" ; width.fun = 7 ; height.fun = 7 ; paper = "special" ; no.pdf.overwrite = TRUE ; return.output = TRUE # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = pdf.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = pdf.name.file, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = width.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = height.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = paper, options = c("a4", "letter", "legal", "us", "executive", "a4r", "USr", "special", "A4", "LETTER", "LEGAL", "US"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data =no.pdf.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = return.output, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+if(path.fun == "working.dir"){
+path.fun <- getwd()
+}else{
+if(grepl(x = path.fun, pattern = ".+/$")){
+path.fun <- substr(path.fun, 1, nchar(path.fun) - 1) # remove the last /
+}
+if(dir.exists(path.fun) == FALSE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": path.fun ARGUMENT DOES NOT CORRESPOND TO EXISTING DIRECTORY\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
+open.fail <- NULL
+windows()
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+}else if(Sys.info()["sysname"] == "Linux"){
+if(pdf.disp == TRUE){
+if(file.exists(paste0(path.fun, "/recover_ini_par.pdf"))){
+tempo.cat <- paste0("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT BE USED ON LINUX IF A recover_ini_par.pdf FILE ALREADY EXISTS HERE: ", paste(path.fun, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}else{
+pdf(width = width.fun, height = height.fun, file=paste0(path.fun, "/recover_ini_par.pdf"), paper = paper)
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the pdf windows
+file.remove(paste0(path.fun, "/recover_ini_par.pdf")) # remove the pdf file
+}
+}else{
+# test if X11 can be opened
+if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED ON LINUX IF A Rplots.pdf FILE ALREADY EXISTS HERE: ", getwd(), "\n\n================\n\n")
+stop(tempo.cat)
+}else{
+open.fail <- suppressWarnings(try(X11(), silent = TRUE))[] # try to open a X11 window. If open.fail == NULL, no problem, meaning that the X11 window is opened. If open.fail != NULL, a pdf can be opened here paste0(getwd(), "/Rplots.pdf")
+if(is.null(open.fail)){
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+}else if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
+file.remove(paste0(getwd(), "/Rplots.pdf")) # remove the pdf file
+tempo.cat <- ("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE SET pdf.disp ARGUMENT TO TRUE AND RERUN\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+}else{
+open.fail <- NULL
+quartz()
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+}
+zone.ini <- matrix(1, ncol=1) # to recover the initial parameters for next figure region when device region split into several figure regions
+if(pdf.disp == TRUE){
+pdf.loc <- paste0(path.fun, "/", pdf.name.file, ".pdf")
+if(file.exists(pdf.loc) == TRUE & no.pdf.overwrite == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": pdf.loc FILE ALREADY EXISTS AND CANNOT BE OVERWRITTEN DUE TO no.pdf.overwrite ARGUMENT SET TO TRUE: ", pdf.loc, "\n\n================\n\n")
+stop(tempo.cat)
+}else{
+pdf(width = width.fun, height = height.fun, file=pdf.loc, paper = paper)
+}
+}else if(pdf.disp == FALSE){
+pdf.loc <- NULL
+if(Sys.info()["sysname"] == "Windows"){ # .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
+windows(width = width.fun, height = height.fun, rescale="fixed")
+}else if(Sys.info()["sysname"] == "Linux"){
+if( ! is.null(open.fail)){
+stop("\n\n================\n\nPROBLEM IN fun_open(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE SET pdf.disp ARGUMENT TO TRUE AND RERUN\n\n================\n\n")
+}else{
+X11(width = width.fun, height = height.fun)
+}
+}else{
+quartz(width = width.fun, height = height.fun)
+}
+}
+if(return.output == TRUE){
+output <- list(pdf.loc = pdf.loc, ini.par = ini.par, zone.ini = zone.ini)
+return(output)
+}
 }
 
 
@@ -2753,5792 +2758,5795 @@ fun_open <- function(pdf.disp = TRUE, path.fun = "working.dir", pdf.name.file =
 
 # Check OK: clear to go Apollo
 fun_prior_plot <- function(param.reinitial = FALSE, xlog.scale = FALSE, ylog.scale = FALSE, remove.label = TRUE, remove.x.axis = TRUE, remove.y.axis = TRUE, std.x.range = TRUE, std.y.range = TRUE, down.space = 1, left.space = 1, up.space = 1, right.space = 1, orient = 1, dist.legend = 3.5, tick.length = 0.5, box.type = "n", amplif.label = 1, amplif.axis = 1, display.extend = FALSE, return.par = FALSE){
-    # AIM
-    # very convenient to erase the axes for post plot axis redrawing using fun_post_plot()
-    # reinitialize and set the graphic parameters before plotting
-    # CANNOT be used if no graphic device already opened
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # param.reinitial: reinitialize graphic parameters before applying the new ones, as defined by the other arguments? Either TRUE or FALSE
-    # xlog.scale: Log scale for the x-axis? Either TRUE or FALSE. If TRUE, erases the x-axis, except legend, for further drawing by fun_post_plot()(xlog argument of par())
-    # ylog.scale: Log scale for the y-axis? Either TRUE or FALSE. If TRUE, erases the y-axis, except legend, for further drawing by fun_post_plot()(ylog argument of par())
-    # remove.label: remove labels (axis legend) of the two axes? Either TRUE or FALSE (ann argument of par())
-    # remove.x.axis: remove x-axis except legend? Either TRUE or FALSE (control the xaxt argument of par()). Automately set to TRUE if xlog.scale == TRUE
-    # remove.y.axis: remove y-axis except legend? Either TRUE or FALSE (control the yaxt argument of par()). Automately set to TRUE if ylog.scale == TRUE
-    # std.x.range: standard range on the x-axis? TRUE (no range extend) or FALSE (4% range extend). Controls xaxs argument of par() (TRUE is xaxs = "i", FALSE is xaxs = "r")
-    # std.y.range: standard range on the y-axis? TRUE (no range extend) or FALSE (4% range extend). Controls yaxs argument of par() (TRUE is yaxs = "i", FALSE is yaxs = "r")
-    # down.space: lower vertical margin (in inches, mai argument of par())
-    # left.space: left horizontal margin (in inches, mai argument of par())
-    # up.space: upper vertical margin between plot region and grapical window (in inches, mai argument of par())
-    # right.space: right horizontal margin (in inches, mai argument of par())
-    # orient: scale number orientation (las argument of par()). 0, always parallel to the axis; 1, always horizontal; 2, always perpendicular to the axis; 3, always vertical
-    # dist.legend: numeric value that moves axis legends away in inches (first number of mgp argument of par() but in inches thus / 0.2)
-    # tick.length: length of the ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc. 0 means no tick
-    # box.type: bty argument of par(). Either "o", "l", "7", "c", "u", "]", the resulting box resembles the corresponding upper case letter. A value of "n" suppresses the box
-    # amplif.label: increase or decrease the size of the text in legends
-    # amplif.axis: increase or decrease the size of the scale numbers in axis
-    # display.extend: extend display beyond plotting region? Either TRUE or FALSE (xpd argument of par() without NA)
-    # return.par: return graphic parameter modification?
-    # RETURN
-    # return graphic parameter modification
-    # EXAMPLES
-    # fun_prior_plot(param.reinitial = FALSE, xlog.scale = FALSE, ylog.scale = FALSE, remove.label = TRUE, remove.x.axis = TRUE, remove.y.axis = TRUE, std.x.range = TRUE, std.y.range = TRUE, down.space = 1, left.space = 1, up.space = 1, right.space = 1, orient = 1, dist.legend = 4.5, tick.length = 0.5, box.type = "n", amplif.label = 1, amplif.axis = 1, display.extend = FALSE, return.par = FALSE)
-    # DEBUGGING
-    # param.reinitial = FALSE ; xlog.scale = FALSE ; ylog.scale = FALSE ; remove.label = TRUE ; remove.x.axis = TRUE ; remove.y.axis = TRUE ; std.x.range = TRUE ; std.y.range = TRUE ; down.space = 1 ; left.space = 1 ; up.space = 1 ; right.space = 1 ; orient = 1 ; dist.legend = 4.5 ; tick.length = 0.5 ; box.type = "n" ; amplif.label = 1 ; amplif.axis = 1 ; display.extend = FALSE ; return.par = FALSE # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = param.reinitial, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = xlog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = ylog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = remove.label, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = remove.x.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = remove.y.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = display.extend, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = return.par, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    if(is.null(dev.list())){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED IF NO GRAPHIC DEVICE ALREADY OPENED (dev.list() IS CURRENTLY NULL)\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(param.reinitial == TRUE){
-        if( ! all(names(dev.cur()) == "null device")){
-            active.wind.nb <- dev.cur()
-        }else{
-            active.wind.nb <- 0
-        }
-        if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
-            windows()
-            ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-            invisible(dev.off()) # close the new window
-        }else if(Sys.info()["sysname"] == "Linux"){
-            if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED ON LINUX WITH param.reinitial SET TO TRUE IF A Rplots.pdf FILE ALREADY EXISTS HERE: ", getwd(), "\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                open.fail <- suppressWarnings(try(X11(), silent = TRUE))[] # try to open a X11 window. If open.fail == NULL, no problem, meaning that the X11 window is opened. If open.fail != NULL, a pdf can be opened here paste0(getwd(), "/Rplots.pdf")
-                if(is.null(open.fail)){
-                    ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-                    invisible(dev.off()) # close the new window
-                }else if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
-                    ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-                    invisible(dev.off()) # close the new window
-                    file.remove(paste0(getwd(), "/Rplots.pdf")) # remove the pdf file
-                }else{
-                    tempo.cat <- ("\n\n================\n\nPROBLEM IN fun_prior_plot(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE USE PDF GRAPHIC INTERFACES AND RERUN\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-            }
-        }else{ # macOS
-            quartz()
-            ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened)
-            invisible(dev.off()) # close the new window
-        }
-        if( ! all(names(dev.cur()) == "null device")){
-            dev.set(active.wind.nb) # go back to the active windows if exists
-            par(ini.par) # apply the initial par to current window
-        }
-    }
-    if(remove.x.axis == TRUE){
-        par(xaxt = "n") # suppress the y-axis label
-    }else{
-        par(xaxt = "s")
-    }
-    if(remove.y.axis == TRUE){
-        par(yaxt = "n") # suppress the y-axis label
-    }else{
-        par(yaxt = "s")
-    }
-    if(std.x.range == TRUE){
-        par(xaxs = "i")
-    }else{
-        par(xaxs = "r")
-    }
-    if(std.y.range == TRUE){
-        par(yaxs = "i")
-    }else{
-        par(yaxs = "r")
-    }
-    par(mai = c(down.space, left.space, up.space, right.space), ann = ! remove.label, las = orient, mgp = c(dist.legend/0.2, 1, 0), xpd = display.extend, bty= box.type, cex.lab = amplif.label, cex.axis = amplif.axis)
-    par(tcl = -par()$mgp[2] * tick.length) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
-    if(xlog.scale == TRUE){
-        par(xaxt = "n", xlog = TRUE) # suppress the x-axis label
-    }else{
-        par(xlog = FALSE)
-    }
-    if(ylog.scale == TRUE){
-        par(yaxt = "n", ylog = TRUE) # suppress the y-axis label
-    }else{
-        par(ylog = FALSE)
-    }
-    if(return.par == TRUE){
-        tempo.par <- par()
-        return(tempo.par)
-    }
+# AIM
+# very convenient to erase the axes for post plot axis redrawing using fun_post_plot()
+# reinitialize and set the graphic parameters before plotting
+# CANNOT be used if no graphic device already opened
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# param.reinitial: reinitialize graphic parameters before applying the new ones, as defined by the other arguments? Either TRUE or FALSE
+# xlog.scale: Log scale for the x-axis? Either TRUE or FALSE. If TRUE, erases the x-axis, except legend, for further drawing by fun_post_plot()(xlog argument of par())
+# ylog.scale: Log scale for the y-axis? Either TRUE or FALSE. If TRUE, erases the y-axis, except legend, for further drawing by fun_post_plot()(ylog argument of par())
+# remove.label: remove labels (axis legend) of the two axes? Either TRUE or FALSE (ann argument of par())
+# remove.x.axis: remove x-axis except legend? Either TRUE or FALSE (control the xaxt argument of par()). Automately set to TRUE if xlog.scale == TRUE
+# remove.y.axis: remove y-axis except legend? Either TRUE or FALSE (control the yaxt argument of par()). Automately set to TRUE if ylog.scale == TRUE
+# std.x.range: standard range on the x-axis? TRUE (no range extend) or FALSE (4% range extend). Controls xaxs argument of par() (TRUE is xaxs = "i", FALSE is xaxs = "r")
+# std.y.range: standard range on the y-axis? TRUE (no range extend) or FALSE (4% range extend). Controls yaxs argument of par() (TRUE is yaxs = "i", FALSE is yaxs = "r")
+# down.space: lower vertical margin (in inches, mai argument of par())
+# left.space: left horizontal margin (in inches, mai argument of par())
+# up.space: upper vertical margin between plot region and grapical window (in inches, mai argument of par())
+# right.space: right horizontal margin (in inches, mai argument of par())
+# orient: scale number orientation (las argument of par()). 0, always parallel to the axis; 1, always horizontal; 2, always perpendicular to the axis; 3, always vertical
+# dist.legend: numeric value that moves axis legends away in inches (first number of mgp argument of par() but in inches thus / 0.2)
+# tick.length: length of the ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc. 0 means no tick
+# box.type: bty argument of par(). Either "o", "l", "7", "c", "u", "]", the resulting box resembles the corresponding upper case letter. A value of "n" suppresses the box
+# amplif.label: increase or decrease the size of the text in legends
+# amplif.axis: increase or decrease the size of the scale numbers in axis
+# display.extend: extend display beyond plotting region? Either TRUE or FALSE (xpd argument of par() without NA)
+# return.par: return graphic parameter modification?
+# RETURN
+# return graphic parameter modification
+# EXAMPLES
+# fun_prior_plot(param.reinitial = FALSE, xlog.scale = FALSE, ylog.scale = FALSE, remove.label = TRUE, remove.x.axis = TRUE, remove.y.axis = TRUE, std.x.range = TRUE, std.y.range = TRUE, down.space = 1, left.space = 1, up.space = 1, right.space = 1, orient = 1, dist.legend = 4.5, tick.length = 0.5, box.type = "n", amplif.label = 1, amplif.axis = 1, display.extend = FALSE, return.par = FALSE)
+# DEBUGGING
+# param.reinitial = FALSE ; xlog.scale = FALSE ; ylog.scale = FALSE ; remove.label = TRUE ; remove.x.axis = TRUE ; remove.y.axis = TRUE ; std.x.range = TRUE ; std.y.range = TRUE ; down.space = 1 ; left.space = 1 ; up.space = 1 ; right.space = 1 ; orient = 1 ; dist.legend = 4.5 ; tick.length = 0.5 ; box.type = "n" ; amplif.label = 1 ; amplif.axis = 1 ; display.extend = FALSE ; return.par = FALSE # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = param.reinitial, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = xlog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = ylog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = remove.label, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = remove.x.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = remove.y.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = display.extend, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = return.par, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+if(is.null(dev.list())){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED IF NO GRAPHIC DEVICE ALREADY OPENED (dev.list() IS CURRENTLY NULL)\n\n================\n\n")
+stop(tempo.cat)
+}
+if(param.reinitial == TRUE){
+if( ! all(names(dev.cur()) == "null device")){
+active.wind.nb <- dev.cur()
+}else{
+active.wind.nb <- 0
+}
+if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
+windows()
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+}else if(Sys.info()["sysname"] == "Linux"){
+if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIS FUNCTION CANNOT BE USED ON LINUX WITH param.reinitial SET TO TRUE IF A Rplots.pdf FILE ALREADY EXISTS HERE: ", getwd(), "\n\n================\n\n")
+stop(tempo.cat)
+}else{
+open.fail <- suppressWarnings(try(X11(), silent = TRUE))[] # try to open a X11 window. If open.fail == NULL, no problem, meaning that the X11 window is opened. If open.fail != NULL, a pdf can be opened here paste0(getwd(), "/Rplots.pdf")
+if(is.null(open.fail)){
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+}else if(file.exists(paste0(getwd(), "/Rplots.pdf"))){
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+invisible(dev.off()) # close the new window
+file.remove(paste0(getwd(), "/Rplots.pdf")) # remove the pdf file
+}else{
+tempo.cat <- ("\n\n================\n\nPROBLEM IN fun_prior_plot(): THIS FUNCTION CANNOT OPEN GUI ON LINUX OR NON MACOS UNIX SYSTEM (X GRAPHIC INTERFACE HAS TO BE SET).\nTO OVERCOME THIS, PLEASE USE PDF GRAPHIC INTERFACES AND RERUN\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}else{ # macOS
+quartz()
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened)
+invisible(dev.off()) # close the new window
+}
+if( ! all(names(dev.cur()) == "null device")){
+dev.set(active.wind.nb) # go back to the active windows if exists
+par(ini.par) # apply the initial par to current window
+}
+}
+if(remove.x.axis == TRUE){
+par(xaxt = "n") # suppress the y-axis label
+}else{
+par(xaxt = "s")
+}
+if(remove.y.axis == TRUE){
+par(yaxt = "n") # suppress the y-axis label
+}else{
+par(yaxt = "s")
+}
+if(std.x.range == TRUE){
+par(xaxs = "i")
+}else{
+par(xaxs = "r")
+}
+if(std.y.range == TRUE){
+par(yaxs = "i")
+}else{
+par(yaxs = "r")
+}
+par(mai = c(down.space, left.space, up.space, right.space), ann = ! remove.label, las = orient, mgp = c(dist.legend/0.2, 1, 0), xpd = display.extend, bty= box.type, cex.lab = amplif.label, cex.axis = amplif.axis)
+par(tcl = -par()$mgp[2] * tick.length) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
+if(xlog.scale == TRUE){
+par(xaxt = "n", xlog = TRUE) # suppress the x-axis label
+}else{
+par(xlog = FALSE)
+}
+if(ylog.scale == TRUE){
+par(yaxt = "n", ylog = TRUE) # suppress the y-axis label
+}else{
+par(ylog = FALSE)
+}
+if(return.par == TRUE){
+tempo.par <- par()
+return(tempo.par)
+}
 }
 
 
 ######## fun_scale() #### select nice label numbers when setting number of ticks on an axis
 
 
-
+ 
 
 
 # Check OK: clear to go Apollo
 fun_scale <- function(n, lim, kind = "approx", path.lib = NULL){
-    # AIM
-    # attempt to select nice scale numbers when setting n ticks on a lim axis range
-    # ARGUMENTS
-    # n: desired number of main ticks on the axis (integer more than 0)
-    # lim: vector of 2 numbers indicating the limit range of the axis. Order of the 2 values matters (for inverted axis). Can be log transformed values
-    # kind: either "approx" (approximative), "strict" (strict) or "strict.cl" (strict clean). If "approx", use the scales::trans_breaks() function to provide an easy to read scale of approximately n ticks spanning the range of the lim argument. If "strict", cut the range of the lim argument into n + 1 equidistant part and return the n numbers at each boundary. This often generates numbers uneasy to read. If "strict.cl", provide an easy to read scale of exactly n ticks, but sometimes not completely spanning the range of the lim argument
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # if kind = "approx":
-    # ggplot2
-    # scales
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_round()
-    # RETURN
-    # a vector of numbers
-    # EXAMPLES
-    # approximate number of main ticks
-    # ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "approx") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
-    # strict number of main ticks
-    # ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "strict") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
-    # strict "clean" number of main ticks
-    # ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "strict.cl") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
-    # approximate number of main ticks, scale inversion
-    # ymin = 3.101 ; ymax = 2 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "approx") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
-    # DEBUGGING
-    # n = 9 ; lim = c(2, 3.101) ; kind = "approx" ; path.lib = NULL # for function debugging
-    # n = 10 ; lim = c(1e-4, 1e6) ; kind = "approx" ; path.lib = NULL # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # end initial argument checking
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = n, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & n == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT MUST BE A NON NULL AND POSITIVE INTEGER\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE) # 
-    }
-    tempo <- fun_check(data = lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & diff(lim) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": lim ARGUMENT HAS A NULL RANGE (2 IDENTICAL VALUES)\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }else if(tempo$problem == FALSE & any(lim %in% c(Inf, -Inf))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = kind, options = c("approx", "strict", "strict.cl"), length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    lim.order <- order(lim) # to deal with inverted axis
-    lim <- sort(lim)
-    if(kind == "approx"){
-        # package checking
-        fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-        fun_pack(req.package = c("scales"), path.lib = path.lib)
-        # end package checking
-        output <- ggplot2::ggplot_build(ggplot2::ggplot() + ggplot2::scale_y_continuous(
-            breaks = scales::trans_breaks(
-                trans = "identity", 
-                inv = "identity", 
-                n = n
-            ), 
-            limits = lim
-        ))$layout$panel_params[[1]]$y.major_source # pretty() alone is not appropriate: tempo.pret <-  pretty(seq(lim[1] ,lim[2], length.out = n)) ; tempo.pret[tempo.pret > = lim[1] & tempo.pret < = lim[2]]
-    }else if(kind == "strict"){
-        output <- fun_round(seq(lim[1] ,lim[2], length.out = n), 2)
-    }else if(kind == "strict.cl"){
-        tempo.range <- diff(sort(lim))
-        tempo.max <- max(lim)
-        tempo.min <- min(lim)
-        mid <- tempo.min + (tempo.range/2) # middle of axis
-        tempo.inter <- tempo.range / (n + 1) # current interval between two ticks, between 0 and Inf
-        if(tempo.inter == 0){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": THE INTERVAL BETWEEN TWO TICKS OF THE SCALE IS NULL. MODIFY THE lim OR n ARGUMENT\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        log10.abs.lim <- 200
-        log10.range <- (-log10.abs.lim):log10.abs.lim
-        log10.vec <- 10^log10.range
-        round.vec <- c(5, 4, 3, 2.5, 2, 1.25, 1)
-        dec.table <- outer(log10.vec, round.vec) # table containing the scale units (row: power of ten from -201 to +199, column: the 5, 2.5, 2, 1.25, 1 notches
-        
-        
-        
-        # recover the number of leading zeros in tempo.inter
-        ini.scipen <- options()$scipen
-        options(scipen = -1000) # force scientific format
-        if(any(grepl(pattern = "\\+", x = tempo.inter))){ # tempo.inter > 1
-            power10.exp <- as.integer(substring(text = tempo.inter, first = (regexpr(pattern = "\\+", text = tempo.inter) + 1))) # recover the power of 10. Example recover 08 from 1e+08
-            mantisse <- as.numeric(substr(x = tempo.inter, start = 1, stop = (regexpr(pattern = "\\+", text = tempo.inter) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
-        }else if(any(grepl(pattern = "\\-", x = tempo.inter))){ # tempo.inter < 1
-            power10.exp <- as.integer(substring(text = tempo.inter, first = (regexpr(pattern = "\\-", text = tempo.inter)))) # recover the power of 10. Example recover 08 from 1e+08
-            mantisse <- as.numeric(substr(x = tempo.inter, start = 1, stop = (regexpr(pattern = "\\-", text = tempo.inter) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
-        }else{
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        tempo.scale <- dec.table[log10.range == power10.exp, ]
-        # new interval 
-        inter.select <- NULL
-        for(i1 in 1:length(tempo.scale)){
-            tempo.first.tick <- trunc((tempo.min + tempo.scale[i1]) / tempo.scale[i1]) * (tempo.scale[i1]) # this would be use to have a number not multiple of tempo.scale[i1]: ceiling(tempo.min) + tempo.scale[i1] * 10^power10.exp
-            tempo.last.tick <- tempo.first.tick + tempo.scale[i1] * (n - 1)
-            if((tempo.first.tick >= tempo.min) & (tempo.last.tick <= tempo.max)){
-                inter.select <- tempo.scale[i1]
-                break()
-            }
-        }
-        if(is.null(inter.select)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        options(scipen = ini.scipen) # restore the initial scientific penalty
-        # end new interval 
-        # centering the new scale 
-        tempo.mid <- trunc((mid + (-1:1) * inter.select) / inter.select) * inter.select # tempo middle tick closest to the middle axis
-        mid.tick <- tempo.mid[which.min(abs(tempo.mid - mid))]
-        if(n == 1){
-            output <- mid.tick
-        }else if(n == 2){
-            tempo.min.dist <- mid.tick - inter.select - tempo.min
-            tempo.max.dist <- tempo.max - mid.tick + inter.select
-            if(tempo.min.dist <= tempo.max.dist){ # distance between lowest tick and bottom axis <= distance between highest tick and top axis. If yes, extra tick but at the top, otherwise at the bottom
-                output <- c(mid.tick, mid.tick + inter.select)
-            }else{
-                output <- c(mid.tick - inter.select, mid.tick)
-            }
-        }else if((n / 2 - trunc(n / 2)) > 0.1){ # > 0.1 to avoid floating point. Because result can only be 0 or 0.5. Thus, > 0.1 means odd number
-            output <- c(mid.tick - (trunc(n / 2):1) * inter.select, mid.tick, mid.tick + (1:trunc(n / 2)) * inter.select)
-        }else if((n / 2 - trunc(n / 2)) < 0.1){ # < 0.1 to avoid floating point. Because result can only be 0 or 0.5. Thus, < 0.1 means even number
-            tempo.min.dist <- mid.tick - trunc(n / 2) * inter.select - tempo.min
-            tempo.max.dist <- tempo.max - mid.tick + trunc(n / 2) * inter.select
-            if(tempo.min.dist <= tempo.max.dist){ # distance between lowest tick and bottom axis <= distance between highest tick and top axis. If yes, extra tick but at the bottom, otherwise at the top
-                output <- c(mid.tick - ((trunc(n / 2) - 1):1) * inter.select, mid.tick, mid.tick + (1:trunc(n / 2)) * inter.select)
-            }else{
-                output <- c(mid.tick - (trunc(n / 2):1) * inter.select, mid.tick, mid.tick + (1:(trunc(n / 2) - 1)) * inter.select)
-            }
-        }else{
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        # end centering the new scale 
-        # last check
-        if(min(output) < tempo.min){
-            output <- c(output[-1], max(output) + inter.select) # remove the lowest tick and add a tick at the top
-        }else if( max(output) > tempo.max){
-            output <- c(min(output) - inter.select, output[-length(output)])
-        }
-        if(min(output) < tempo.min | max(output) > tempo.max){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(is.na(output))){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5 (NA GENERATION)\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        # end last check
-    }else{
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(diff(lim.order) < 0){
-        output <- rev(output)
-    }
-    return(output)
+# AIM
+# attempt to select nice scale numbers when setting n ticks on a lim axis range
+# ARGUMENTS
+# n: desired number of main ticks on the axis (integer more than 0)
+# lim: vector of 2 numbers indicating the limit range of the axis. Order of the 2 values matters (for inverted axis). Can be log transformed values
+# kind: either "approx" (approximative), "strict" (strict) or "strict.cl" (strict clean). If "approx", use the scales::trans_breaks() function to provide an easy to read scale of approximately n ticks spanning the range of the lim argument. If "strict", cut the range of the lim argument into n + 1 equidistant part and return the n numbers at each boundary. This often generates numbers uneasy to read. If "strict.cl", provide an easy to read scale of exactly n ticks, but sometimes not completely spanning the range of the lim argument
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# if kind = "approx":
+# ggplot2
+# scales
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_round()
+# RETURN
+# a vector of numbers
+# EXAMPLES
+# approximate number of main ticks
+# ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "approx") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
+# strict number of main ticks
+# ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "strict") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
+# strict "clean" number of main ticks
+# ymin = 2 ; ymax = 3.101 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "strict.cl") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
+# approximate number of main ticks, scale inversion
+# ymin = 3.101 ; ymax = 2 ; n = 5 ; scale <- fun_scale(n = n, lim = c(ymin, ymax), kind = "approx") ; scale ; par(yaxt = "n", yaxs = "i", las = 1) ; plot(ymin:ymax, ymin:ymax, xlim = range(scale, ymin, ymax)[order(c(ymin, ymax))], ylim = range(scale, ymin, ymax)[order(c(ymin, ymax))], xlab = "DEFAULT SCALE", ylab = "NEW SCALE") ; par(yaxt = "s") ; axis(side = 2, at = scale)
+# DEBUGGING
+# n = 9 ; lim = c(2, 3.101) ; kind = "approx" ; path.lib = NULL # for function debugging
+# n = 10 ; lim = c(1e-4, 1e6) ; kind = "approx" ; path.lib = NULL # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# end initial argument checking
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = n, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & n == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT MUST BE A NON NULL AND POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE) # 
+}
+tempo <- fun_check(data = lim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & diff(lim) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": lim ARGUMENT HAS A NULL RANGE (2 IDENTICAL VALUES)\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & any(lim %in% c(Inf, -Inf))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": lim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = kind, options = c("approx", "strict", "strict.cl"), length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+lim.order <- order(lim) # to deal with inverted axis
+lim <- sort(lim)
+if(kind == "approx"){
+# package checking
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+fun_pack(req.package = c("scales"), path.lib = path.lib)
+# end package checking
+output <- ggplot2::ggplot_build(ggplot2::ggplot() + ggplot2::scale_y_continuous(
+breaks = scales::trans_breaks(
+trans = "identity", 
+inv = "identity", 
+n = n
+), 
+limits = lim
+))$layout$panel_params[[1]]$y.major_source # pretty() alone is not appropriate: tempo.pret <-  pretty(seq(lim[1] ,lim[2], length.out = n)) ; tempo.pret[tempo.pret > = lim[1] & tempo.pret < = lim[2]]
+}else if(kind == "strict"){
+output <- fun_round(seq(lim[1] ,lim[2], length.out = n), 2)
+}else if(kind == "strict.cl"){
+tempo.range <- diff(sort(lim))
+tempo.max <- max(lim)
+tempo.min <- min(lim)
+mid <- tempo.min + (tempo.range/2) # middle of axis
+tempo.inter <- tempo.range / (n + 1) # current interval between two ticks, between 0 and Inf
+if(tempo.inter == 0){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": THE INTERVAL BETWEEN TWO TICKS OF THE SCALE IS NULL. MODIFY THE lim OR n ARGUMENT\n\n============\n\n"))
+stop(tempo.cat)
+}
+log10.abs.lim <- 200
+log10.range <- (-log10.abs.lim):log10.abs.lim
+log10.vec <- 10^log10.range
+round.vec <- c(5, 4, 3, 2.5, 2, 1.25, 1)
+dec.table <- outer(log10.vec, round.vec) # table containing the scale units (row: power of ten from -201 to +199, column: the 5, 2.5, 2, 1.25, 1 notches
+
+ 
+
+# recover the number of leading zeros in tempo.inter
+ini.scipen <- options()$scipen
+options(scipen = -1000) # force scientific format
+if(any(grepl(pattern = "\\+", x = tempo.inter))){ # tempo.inter > 1
+power10.exp <- as.integer(substring(text = tempo.inter, first = (regexpr(pattern = "\\+", text = tempo.inter) + 1))) # recover the power of 10. Example recover 08 from 1e+08
+mantisse <- as.numeric(substr(x = tempo.inter, start = 1, stop = (regexpr(pattern = "\\+", text = tempo.inter) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
+}else if(any(grepl(pattern = "\\-", x = tempo.inter))){ # tempo.inter < 1
+power10.exp <- as.integer(substring(text = tempo.inter, first = (regexpr(pattern = "\\-", text = tempo.inter)))) # recover the power of 10. Example recover 08 from 1e+08
+mantisse <- as.numeric(substr(x = tempo.inter, start = 1, stop = (regexpr(pattern = "\\-", text = tempo.inter) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n"))
+stop(tempo.cat)
+}
+tempo.scale <- dec.table[log10.range == power10.exp, ]
+# new interval 
+inter.select <- NULL
+for(i1 in 1:length(tempo.scale)){
+tempo.first.tick <- trunc((tempo.min + tempo.scale[i1]) / tempo.scale[i1]) * (tempo.scale[i1]) # this would be use to have a number not multiple of tempo.scale[i1]: ceiling(tempo.min) + tempo.scale[i1] * 10^power10.exp
+tempo.last.tick <- tempo.first.tick + tempo.scale[i1] * (n - 1)
+if((tempo.first.tick >= tempo.min) & (tempo.last.tick <= tempo.max)){
+inter.select <- tempo.scale[i1]
+break()
+}
+}
+if(is.null(inter.select)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
+stop(tempo.cat)
+}
+options(scipen = ini.scipen) # restore the initial scientific penalty
+# end new interval 
+# centering the new scale 
+tempo.mid <- trunc((mid + (-1:1) * inter.select) / inter.select) * inter.select # tempo middle tick closest to the middle axis
+mid.tick <- tempo.mid[which.min(abs(tempo.mid - mid))]
+if(n == 1){
+output <- mid.tick
+}else if(n == 2){
+tempo.min.dist <- mid.tick - inter.select - tempo.min
+tempo.max.dist <- tempo.max - mid.tick + inter.select
+if(tempo.min.dist <= tempo.max.dist){ # distance between lowest tick and bottom axis <= distance between highest tick and top axis. If yes, extra tick but at the top, otherwise at the bottom
+output <- c(mid.tick, mid.tick + inter.select)
+}else{
+output <- c(mid.tick - inter.select, mid.tick)
+}
+}else if((n / 2 - trunc(n / 2)) > 0.1){ # > 0.1 to avoid floating point. Because result can only be 0 or 0.5. Thus, > 0.1 means odd number
+output <- c(mid.tick - (trunc(n / 2):1) * inter.select, mid.tick, mid.tick + (1:trunc(n / 2)) * inter.select)
+}else if((n / 2 - trunc(n / 2)) < 0.1){ # < 0.1 to avoid floating point. Because result can only be 0 or 0.5. Thus, < 0.1 means even number
+tempo.min.dist <- mid.tick - trunc(n / 2) * inter.select - tempo.min
+tempo.max.dist <- tempo.max - mid.tick + trunc(n / 2) * inter.select
+if(tempo.min.dist <= tempo.max.dist){ # distance between lowest tick and bottom axis <= distance between highest tick and top axis. If yes, extra tick but at the bottom, otherwise at the top
+output <- c(mid.tick - ((trunc(n / 2) - 1):1) * inter.select, mid.tick, mid.tick + (1:trunc(n / 2)) * inter.select)
+}else{
+output <- c(mid.tick - (trunc(n / 2):1) * inter.select, mid.tick, mid.tick + (1:(trunc(n / 2) - 1)) * inter.select)
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
+stop(tempo.cat)
+}
+# end centering the new scale 
+# last check
+if(min(output) < tempo.min){
+output <- c(output[-1], max(output) + inter.select) # remove the lowest tick and add a tick at the top
+}else if( max(output) > tempo.max){
+output <- c(min(output) - inter.select, output[-length(output)])
+}
+if(min(output) < tempo.min | max(output) > tempo.max){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(is.na(output))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5 (NA GENERATION)\n\n============\n\n"))
+stop(tempo.cat)
+}
+# end last check
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(diff(lim.order) < 0){
+output <- rev(output)
+}
+return(output)
 }
 
 
 ######## fun_post_plot() #### set graph param after plotting (axes redesign for instance)
 
 
-
+ 
 
 
 # Check OK: clear to go Apollo
 fun_post_plot <- function(x.side = 0, x.log.scale = FALSE, x.categ = NULL, x.categ.pos = NULL, x.lab = "", x.axis.magnific = 1.5, x.label.magnific = 1.5, x.dist.legend = 0.5, x.nb.inter.tick = 1, y.side = 0, y.log.scale = FALSE, y.categ = NULL, y.categ.pos = NULL, y.lab = "", y.axis.magnific = 1.5, y.label.magnific = 1.5, y.dist.legend = 0.5, y.nb.inter.tick = 1, text.angle = 90, tick.length = 0.5, sec.tick.length = 0.3, bg.color = NULL, grid.lwd = NULL, grid.col = "white", corner.text = "", magnific.corner.text = 1, just.label.add = FALSE, par.reset = FALSE, custom.par = NULL){
-    # AIM
-    # redesign axis. If x.side = 0, y.side = 0, the function just adds text at topright of the graph and reset par() for next graphics and provides outputs (see below)
-    # provide also positions for legend or additional text on the graph
-    # use fun_prior_plot() before this function for initial inactivation of the axis drawings
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_open() to reinitialize graph parameters if par.reset = TRUE and custom.par = NULL
-    # ARGUMENTS
-    # x.side: axis at the bottom (1) or top (3) of the region figure. Write 0 for no change
-    # x.log.scale: Log scale for the x-axis? Either TRUE or FALSE
-    # x.categ: character vector representing the classes (levels()) to specify when the x-axis is qualititative(stripchart, boxplot)
-    # x.categ.pos: position of the classes names (numeric vector of identical length than x.categ). If left NULL, this will be 1:length(levels())
-    # x.lab: label of the x-axis. If x.side == 0 and x.lab != "", then x.lab is printed
-    # x.axis.magnific: increase or decrease the value to increase or decrease the size of the x axis numbers. Also control the size of displayed categories
-    # x.label.magnific: increase or decrease the value to increase or decrease the size of the x axis legend
-    # x.dist.legend: increase the number to move x-axis legends away in inches (first number of mgp argument of par() but in inches)
-    # x.nb.inter.tick: number of secondary ticks between main ticks on x-axis (only if not log scale). 0 means no secondary ticks
-    # y.side: axis at the left (2) or right (4) of the region figure. Write 0 for no change
-    # y.log.scale: Log scale for the y-axis? Either TRUE or FALSE
-    # y.categ: classes (levels()) to specify when the y-axis is qualititative(stripchart, boxplot)
-    # y.categ.pos: position of the classes names (numeric vector of identical length than y.categ). If left NULL, this will be 1:length(levels())
-    # y.lab: label of the y-axis. If y.side == 0 and y.lab != "", then y.lab is printed
-    # y.axis.magnific: increase or decrease the value to increase or decrease the size of the y axis numbers. Also control the size of displayed categories
-    # y.label.magnific: increase or decrease the value to increase or decrease the size of the y axis legend
-    # y.dist.legend: increase the number to move y-axis legends away in inches (first number of mgp argument of par() but in inches)
-    # y.nb.inter.tick: number of secondary ticks between main ticks on y-axis (only if not log scale). 0 means non secondary ticks
-    # text.angle: angle of the text when axis is qualitative
-    # tick.length: length of the main ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
-    # sec.tick.length: length of the secondary ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
-    # bg.color: background color of the plot region. NULL for no color. BEWARE: cover/hide an existing plot !
-    # grid.lwd: if non NULL, activate the grid line (specify the line width)
-    # grid.col: grid line color (only if grid.lwd non NULL)
-    # corner.text: text to add at the top right corner of the window
-    # magnific.corner.text: increase or decrease the size of the text
-    # par.reset: to reset all the graphics parameters. BEWARE: TRUE can generate display problems, mainly in graphic devices with multiple figure regions
-    # just.label.add: just add axis labels (legend)? Either TRUE or FALSE. If TRUE, at least (x.side == 0 & x.lab != "") or (y.side == 0 & y.lab != "") must be set to display the corresponding x.lab or y.lab
-    # custom.par: list that provides the parameters that reset all the graphics parameters. BEWARE: if NULL and par.reset == TRUE, the default par() parameters are used
-    # RETURN
-    # a list containing: 
-    # $x.mid.left.dev.region: middle of the left margin of the device region, in coordinates of the x-axis
-    # $x.left.dev.region: left side of the left margin (including the potential margin of the device region), in coordinates of the x-axis
-    # $x.mid.right.dev.region: middle of the right margin of the device region, in coordinates of the x-axis
-    # $x.right.dev.region: right side of the right margin (including the potential margin of the device region), in coordinates of the x-axis
-    # $x.mid.left.fig.region: middle of the left margin of the figure region, in coordinates of the x-axis
-    # $x.left.fig.region: left side of the left margin, in coordinates of the x-axis
-    # $x.mid.right.fig.region: middle of the right margin of the figure region, in coordinates of the x-axis
-    # $x.right.fig.region: right side of the right margin, in coordinates of the x-axis
-    # $x.left.plot.region: left side of the plot region, in coordinates of the x-axis
-    # $x.right.plot.region: right side of the plot region, in coordinates of the x-axis
-    # $x.mid.plot.region: middle of the plot region, in coordinates of the x-axis
-    # $y.mid.bottom.dev.region: middle of the bottom margin of the device region, in coordinates of the y-axis
-    # $y.bottom.dev.region: bottom side of the bottom margin (including the potential margin of the device region), in coordinates of the y-axis
-    # $y.mid.top.dev.region: middle of the top margin of the device region, in coordinates of the y-axis
-    # $y.top.dev.region: top side of the top margin (including the potential margin of the device region), in coordinates of the y-axis
-    # $y.mid.bottom.fig.region: middle of the bottom margin of the figure region, in coordinates of the y-axis
-    # $y.bottom.fig.region: bottom of the bottom margin of the figure region, in coordinates of the y-axis
-    # $y.mid.top.fig.region: middle of the top margin of the figure region, in coordinates of the y-axis
-    # $y.top.fig.region: top of the top margin of the figure region, in coordinates of the y-axis
-    # $y.top.plot.region: top of the plot region, in coordinates of the y-axis
-    # $y.bottom.plot.region: bottom of the plot region, in coordinates of the y-axis
-    # $y.mid.plot.region: middle of the plot region, in coordinates of the y-axis
-    # $text: warning text
-    # EXAMPLES
-    # Example of log axis with log y-axis and unmodified x-axis:
-    # prior.par <- fun_prior_plot(param.reinitial = TRUE, xlog.scale = FALSE, ylog.scale = TRUE, remove.label = TRUE, remove.x.axis = FALSE, remove.y.axis = TRUE, down.space = 1, left.space = 1, up.space = 1, right.space = 1, orient = 1, dist.legend = 0.5, tick.length = 0.5, box.type = "n", amplif.label = 1, amplif.axis = 1, display.extend = FALSE, return.par = TRUE) ; plot(1:100, log = "y") ; fun_post_plot(y.side = 2, y.log.scale = prior.par$ylog, x.lab = "Values", y.lab = "TEST", y.axis.magnific = 1.25, y.label.magnific = 1.5, y.dist.legend = 0.7, just.label.add = ! prior.par$ann)
-    # Example of log axis with redrawn x-axis and y-axis:
-    # prior.par <- fun_prior_plot(param.reinitial = TRUE) ; plot(1:100) ; fun_post_plot(x.side = 1, x.lab = "Values", y.side = 2, y.lab = "TEST", y.axis.magnific = 1, y.label.magnific = 2, y.dist.legend = 0.6)
-    # example with margins in the device region:
-    # windows(5,5) ; fun_prior_plot(box.type = "o") ; par(mai=c(0.5,0.5,0.5,0.5), omi = c(0.25,0.25,1,0.25), xaxs = "i", yaxs = "i") ; plot(0:10) ; a <- fun_post_plot(x.side = 0, y.side = 0) ; x <- c(a$x.mid.left.dev.region, a$x.left.dev.region, a$x.mid.right.dev.region, a$x.right.dev.region, a$x.mid.left.fig.region, a$x.left.fig.region, a$x.mid.right.fig.region, a$x.right.fig.region, a$x.right.plot.region, a$x.left.plot.region, a$x.mid.plot.region) ; y <- c(a$y.mid.bottom.dev.region, a$y.bottom.dev.region, a$y.mid.top.dev.region, a$y.top.dev.region, a$y.mid.bottom.fig.region, a$y.bottom.fig.region, a$y.mid.top.fig.region, a$y.top.fig.region, a$y.top.plot.region, a$y.bottom.plot.region, a$y.mid.plot.region) ; par(xpd = NA) ; points(x = rep(5, length(y)), y = y, pch = 16, col = "red") ; text(x = rep(5, length(y)), y = y, c("y.mid.bottom.dev.region", "y.bottom.dev.region", "y.mid.top.dev.region", "y.top.dev.region", "y.mid.bottom.fig.region", "y.bottom.fig.region", "y.mid.top.fig.region", "y.top.fig.region", "y.top.plot.region", "y.bottom.plot.region", "y.mid.plot.region"), cex = 0.65, col = grey(0.25)) ; points(y = rep(5, length(x)), x = x, pch = 16, col = "blue") ; text(y = rep(5, length(x)), x = x, c("x.mid.left.dev.region", "x.left.dev.region", "x.mid.right.dev.region", "x.right.dev.region", "x.mid.left.fig.region", "x.left.fig.region", "x.mid.right.fig.region", "x.right.fig.region", "x.right.plot.region", "x.left.plot.region", "x.mid.plot.region"), cex = 0.65, srt = 90, col = grey(0.25))
-    # DEBUGGING
-    # x.side = 0 ; x.log.scale = FALSE ; x.categ = NULL ; x.categ.pos = NULL ; x.lab = "" ; x.axis.magnific = 1.5 ; x.label.magnific = 1.5 ; x.dist.legend = 1 ; x.nb.inter.tick = 1 ; y.side = 0 ; y.log.scale = FALSE ; y.categ = NULL ; y.categ.pos = NULL ; y.lab = "" ; y.axis.magnific = 1.5 ; y.label.magnific = 1.5 ; y.dist.legend = 0.7 ; y.nb.inter.tick = 1 ; text.angle = 90 ; tick.length = 0.5 ; sec.tick.length = 0.3 ; bg.color = NULL ; grid.lwd = NULL ; grid.col = "white" ; corner.text = "" ; magnific.corner.text = 1 ; just.label.add = FALSE ; par.reset = FALSE ; custom.par = NULL # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_open", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = x.side, options = c(0, 1, 3), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(x.categ)){
-        tempo <- fun_check(data = x.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(x.categ.pos)){
-        tempo <- fun_check(data = x.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = x.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.nb.inter.tick, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.side, options = c(0, 2, 4), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(y.categ)){
-        tempo <- fun_check(data = y.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(y.categ.pos)){
-        tempo <- fun_check(data = y.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = y.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.nb.inter.tick, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = text.angle, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = sec.tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    if( ! is.null(bg.color)){
-        tempo <- fun_check(data = bg.color, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if( ! (bg.color %in% colors() | grepl(pattern = "^#", bg.color))){ # check color
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": bg.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(grid.lwd)){
-        tempo <- fun_check(data = grid.lwd, class = "vector", mode = "numeric", neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(grid.col)){
-        tempo <- fun_check(data = grid.col, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if( ! (grid.col %in% colors() | grepl(pattern = "^#", grid.col))){ # check color
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": grid.col ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = just.label.add, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = par.reset, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(custom.par)){
-        tempo <- fun_check(data = custom.par, typeof = "list", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    text <- NULL
-    par(tcl = -par()$mgp[2] * tick.length)
-    if(x.log.scale == TRUE){
-        grid.coord.x <- c(10^par("usr")[1], 10^par("usr")[2])
-    }else{
-        grid.coord.x <- c(par("usr")[1], par("usr")[2])
-    }
-    if(y.log.scale == TRUE){
-        grid.coord.y <- c(10^par("usr")[3], 10^par("usr")[4])
-    }else{
-        grid.coord.y <- c(par("usr")[3], par("usr")[4])
-    }
-    if( ! is.null(bg.color)){
-        rect(grid.coord.x[1], grid.coord.y[1], grid.coord.x[2], grid.coord.y[2], col = bg.color, border = NA)
-    }
-    if( ! is.null(grid.lwd)){
-        grid(nx = NA, ny = NULL, col = grid.col, lty = 1, lwd = grid.lwd)
-    }
-    if(x.log.scale == TRUE){
-        x.mid.left.dev.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
-        x.left.dev.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1]) # in x coordinates
-        x.mid.right.dev.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
-        x.right.dev.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2])) # in x coordinates
-        x.mid.left.fig.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
-        x.left.fig.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1]) # in x coordinates
-        x.mid.right.fig.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
-        x.right.fig.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2])) # in x coordinates
-        x.left.plot.region <- 10^par("usr")[1] # in x coordinates, left of the plot region (according to x scale)
-        x.right.plot.region <- 10^par("usr")[2] # in x coordinates, right of the plot region (according to x scale)
-        x.mid.plot.region <- 10^((par("usr")[2] + par("usr")[1]) / 2) # in x coordinates, right of the plot region (according to x scale)
-    }else{
-        x.mid.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
-        x.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1]) # in x coordinates
-        x.mid.right.dev.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
-        x.right.dev.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2])) # in x coordinates
-        x.mid.left.fig.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
-        x.left.fig.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1]) # in x coordinates
-        x.mid.right.fig.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
-        x.right.fig.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2])) # in x coordinates
-        x.left.plot.region <- par("usr")[1] # in x coordinates, left of the plot region (according to x scale)
-        x.right.plot.region <- par("usr")[2] # in x coordinates, right of the plot region (according to x scale)
-        x.mid.plot.region <- (par("usr")[2] + par("usr")[1]) / 2 # in x coordinates, right of the plot region (according to x scale)
-    }
-    if(y.log.scale == TRUE){
-        y.mid.bottom.dev.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (par("omd")[3] / 2)) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
-        y.bottom.dev.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * par("omd")[3]) # in y coordinates
-        y.mid.top.dev.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
-        y.top.dev.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4])) # in y coordinates
-        y.mid.bottom.fig.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] / 2) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
-        y.bottom.fig.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3]) # in y coordinates
-        y.mid.top.fig.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
-        y.top.fig.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4])) # in y coordinates
-        y.top.plot.region <- 10^par("usr")[4] # in y coordinates, top of the plot region (according to y scale)
-        y.bottom.plot.region <- 10^par("usr")[3] # in y coordinates, bottom of the plot region (according to y scale)
-        y.mid.plot.region <- (par("usr")[3] + par("usr")[4]) / 2 # in x coordinates, right of the plot region (according to x scale)
-    }else{
-        y.mid.bottom.dev.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (par("omd")[3] / 2)) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
-        y.bottom.dev.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * par("omd")[3]) # in y coordinates
-        y.mid.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
-        y.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4])) # in y coordinates
-        y.mid.bottom.fig.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] / 2) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
-        y.bottom.fig.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3]) # in y coordinates
-        y.mid.top.fig.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
-        y.top.fig.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4])) # in y coordinates
-        y.top.plot.region <- par("usr")[4] # in y coordinates, top of the plot region (according to y scale)
-        y.bottom.plot.region <- par("usr")[3] # in y coordinates, bottom of the plot region (according to y scale)
-        y.mid.plot.region <- ((par("usr")[3] + par("usr")[4]) / 2) # in x coordinates, right of the plot region (according to x scale)
-    }
-    if(x.side == 1 | x.side == 3){
-        par(xpd=FALSE, xaxt="s")
-        if(is.null(x.categ) & x.log.scale == TRUE){
-            if(any(par()$xaxp[1:2] == 0)){
-                if(par()$xaxp[1] == 0){
-                    par(xaxp = c(10^-30, par()$xaxp[2:3])) # because log10(par()$xaxp[1] == 0) == -Inf
-                }
-                if(par()$xaxp[2] == 0){
-                    par(xaxp = c(par()$xaxp[1], 10^-30, par()$xaxp[3])) # because log10(par()$xaxp[2] == 0) == -Inf
-                }
-            }
-            axis(side=x.side, at=c(10^par()$usr[1], 10^par()$usr[2]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
-            mtext(side = x.side, text = x.lab, line = x.dist.legend / 0.2, las = 0, cex = x.label.magnific)
-            par(tcl = -par()$mgp[2] * sec.tick.length) # length of the secondary ticks are reduced
-            suppressWarnings(rug(10^outer(c((log10(par("xaxp")[1]) -1):log10(par("xaxp")[2])), log10(1:10), "+"), ticksize = NA, side = x.side)) # ticksize = NA to allow the use of par()$tcl value
-            par(tcl = -par()$mgp[2] * tick.length) # back to main ticks
-            axis(side = x.side, at = c(1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10), labels = expression(10^-15, 10^-14, 10^-13, 10^-12, 10^-11, 10^-10, 10^-9, 10^-8, 10^-7, 10^-6, 10^-5, 10^-4, 10^-3, 10^-2, 10^-1, 10^0, 10^1, 10^2, 10^3, 10^4, 10^5, 10^6, 10^7, 10^8, 10^9, 10^10), lwd = 0, lwd.ticks = 1, cex.axis = x.axis.magnific)
-            x.text <- 10^par("usr")[2]
-        }else if(is.null(x.categ) & x.log.scale == FALSE){
-            axis(side=x.side, at=c(par()$usr[1], par()$usr[2]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
-            axis(side=x.side, at=round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), cex.axis = x.axis.magnific) # axis(side=x.side, at=round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), labels = format(round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), big.mark=','), cex.axis = x.axis.magnific) # to get the 1000 comma separator
-            mtext(side = x.side, text = x.lab, line = x.dist.legend / 0.2, las = 0, cex = x.label.magnific)
-            if(x.nb.inter.tick > 0){
-                inter.tick.unit <- (par("xaxp")[2] - par("xaxp")[1]) / par("xaxp")[3]
-                par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
-                suppressWarnings(rug(seq(par("xaxp")[1] - 10 * inter.tick.unit, par("xaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + x.nb.inter.tick)), ticksize = NA, x.side)) # ticksize = NA to allow the use of par()$tcl value
-                par(tcl = -par()$mgp[2] * tick.length) # back to main ticks
-            }
-            x.text <- par("usr")[2]
-        }else if(( ! is.null(x.categ)) & x.log.scale == FALSE){
-            if(is.null(x.categ.pos)){
-                x.categ.pos <- 1:length(x.categ)
-            }else if(length(x.categ.pos) != length(x.categ)){
-                stop("\n\nPROBLEM: x.categ.pos MUST BE THE SAME LENGTH AS x.categ\n\n")
-            }
-            par(xpd = TRUE)
-            if(x.side == 1){
-                segments(x0 = x.left.plot.region, x1 = x.right.plot.region, y0 = y.bottom.plot.region, y1 = y.bottom.plot.region) # draw the line of the axis
-                text(x = x.categ.pos, y = y.mid.bottom.fig.region, labels = x.categ, srt = text.angle, cex = x.axis.magnific)
-            }else if(x.side == 3){
-                segments(x0 = x.left.plot.region, x1 = x.right.plot.region, y0 = y.top.plot.region, y1 = y.top.plot.region) # draw the line of the axis
-                text(x = x.categ.pos, y = y.mid.top.fig.region, labels = x.categ, srt = text.angle, cex = x.axis.magnific)
-            }else{
-                stop("\n\nARGUMENT x.side CAN ONLY BE 1 OR 3\n\n")
-            }
-            par(xpd = FALSE)
-            x.text <- par("usr")[2]
-        }else{
-            stop("\n\nPROBLEM WITH THE x.side (", x.side ,") OR x.log.scale (", x.log.scale,") ARGUMENTS\n\n")
-        }
-    }else{
-        x.text <- par("usr")[2]
-    }
-    if(y.side == 2 | y.side == 4){
-        par(xpd=FALSE, yaxt="s")
-        if(is.null(y.categ) & y.log.scale == TRUE){
-            if(any(par()$yaxp[1:2] == 0)){
-                if(par()$yaxp[1] == 0){
-                    par(yaxp = c(10^-30, par()$yaxp[2:3])) # because log10(par()$yaxp[1] == 0) == -Inf
-                }
-                if(par()$yaxp[2] == 0){
-                    par(yaxp = c(par()$yaxp[1], 10^-30, par()$yaxp[3])) # because log10(par()$yaxp[2] == 0) == -Inf
-                }
-            }
-            axis(side=y.side, at=c(10^par()$usr[3], 10^par()$usr[4]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
-            par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
-            suppressWarnings(rug(10^outer(c((log10(par("yaxp")[1])-1):log10(par("yaxp")[2])), log10(1:10), "+"), ticksize = NA, side = y.side)) # ticksize = NA to allow the use of par()$tcl value
-            par(tcl = -par()$mgp[2] * tick.length) # back to main tick length
-            axis(side = y.side, at = c(1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10), labels = expression(10^-15, 10^-14, 10^-13, 10^-12, 10^-11, 10^-10, 10^-9, 10^-8, 10^-7, 10^-6, 10^-5, 10^-4, 10^-3, 10^-2, 10^-1, 10^0, 10^1, 10^2, 10^3, 10^4, 10^5, 10^6, 10^7, 10^8, 10^9, 10^10), lwd = 0, lwd.ticks = 1, cex.axis = y.axis.magnific)
-            y.text <- 10^(par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
-            mtext(side = y.side, text = y.lab, line = y.dist.legend / 0.2, las = 0, cex = y.label.magnific)
-        }else if(is.null(y.categ) & y.log.scale == FALSE){
-            axis(side=y.side, at=c(par()$usr[3], par()$usr[4]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
-            axis(side=y.side, at=round(seq(par()$yaxp[1], par()$yaxp[2], length.out=par()$yaxp[3]+1), 2), cex.axis = y.axis.magnific)
-            mtext(side = y.side, text = y.lab, line = y.dist.legend / 0.2, las = 0, cex = y.label.magnific)
-            if(y.nb.inter.tick > 0){
-                inter.tick.unit <- (par("yaxp")[2] - par("yaxp")[1]) / par("yaxp")[3]
-                par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
-                suppressWarnings(rug(seq(par("yaxp")[1] - 10 * inter.tick.unit, par("yaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + y.nb.inter.tick)), ticksize = NA, side=y.side)) # ticksize = NA to allow the use of par()$tcl value
-                par(tcl = -par()$mgp[2] * tick.length) # back to main tick length
-            }
-            y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
-        }else if(( ! is.null(y.categ)) & y.log.scale == FALSE){
-            if(is.null(y.categ.pos)){
-                y.categ.pos <- 1:length(y.categ)
-            }else if(length(y.categ.pos) != length(y.categ)){
-                stop("\n\nPROBLEM: y.categ.pos MUST BE THE SAME LENGTH AS y.categ\n\n")
-            }
-            axis(side = y.side, at = y.categ.pos, labels = rep("", length(y.categ)), lwd=0, lwd.ticks=1) # draw the line of the axis
-            par(xpd = TRUE)
-            if(y.side == 2){
-                text(x = x.mid.left.fig.region, y = y.categ.pos, labels = y.categ, srt = text.angle, cex = y.axis.magnific)
-            }else if(y.side == 4){
-                text(x = x.mid.right.fig.region, y = y.categ.pos, labels = y.categ, srt = text.angle, cex = y.axis.magnific)
-            }else{
-                stop("\n\nARGUMENT y.side CAN ONLY BE 2 OR 4\n\n")
-            }
-            par(xpd = FALSE)
-            y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
-        }else{
-            stop("\n\nPROBLEM WITH THE y.side (", y.side ,") OR y.log.scale (", y.log.scale,") ARGUMENTS\n\n")
-        }
-    }else{
-        y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
-    }
-    par(xpd=NA)
-    text(x = x.mid.right.fig.region, y = y.text, corner.text, adj=c(1, 1.1), cex = magnific.corner.text) # text at the topright corner. Replace x.right.fig.region by x.text if text at the right edge of the plot region
-    if(just.label.add == TRUE & x.side == 0 & x.lab != ""){
-        text(x = x.mid.plot.region, y = y.mid.bottom.fig.region, x.lab, adj=c(0.5, 0.5), cex = x.label.magnific) # x label
-    }
-    if(just.label.add == TRUE & y.side == 0 & y.lab != ""){
-        text(x = y.mid.plot.region, y = x.mid.left.fig.region, y.lab, adj=c(0.5, 0.5), cex = y.label.magnific) # x label
-    }
-    par(xpd=FALSE)
-    if(par.reset == TRUE){
-        tempo.par <- fun_open(pdf.disp = FALSE, return.output = TRUE)
-        invisible(dev.off()) # close the new window
-        if( ! is.null(custom.par)){
-            if( ! names(custom.par) %in% names(tempo.par$ini.par)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": custom.par ARGUMENT SHOULD HAVE THE NAMES OF THE COMPARTMENT LIST COMING FROM THE par() LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            par(custom.par)
-            text <- c(text, "\nGRAPH PARAMETERS SET TO VALUES DEFINED BY custom.par ARGUMENT\n")
-        }else{
-            par(tempo.par$ini.par)
-            text <- c(text, "\nGRAPH PARAMETERS RESET TO par() DEFAULT VALUES\n")
-        }
-    }
-    output <- list(x.mid.left.dev.region = x.mid.left.dev.region, x.left.dev.region = x.left.dev.region, x.mid.right.dev.region = x.mid.right.dev.region, x.right.dev.region = x.right.dev.region, x.mid.left.fig.region = x.mid.left.fig.region, x.left.fig.region = x.left.fig.region, x.mid.right.fig.region = x.mid.right.fig.region, x.right.fig.region = x.right.fig.region, x.left.plot.region = x.left.plot.region, x.right.plot.region = x.right.plot.region, x.mid.plot.region = x.mid.plot.region, y.mid.bottom.dev.region = y.mid.bottom.dev.region, y.bottom.dev.region = y.bottom.dev.region, y.mid.top.dev.region = y.mid.top.dev.region, y.top.dev.region = y.top.dev.region, y.mid.bottom.fig.region = y.mid.bottom.fig.region, y.bottom.fig.region = y.bottom.fig.region, y.mid.top.fig.region = y.mid.top.fig.region, y.top.fig.region = y.top.fig.region, y.top.plot.region = y.top.plot.region, y.bottom.plot.region = y.bottom.plot.region, y.mid.plot.region = y.mid.plot.region, text = text)
-    return(output)
+# AIM
+# redesign axis. If x.side = 0, y.side = 0, the function just adds text at topright of the graph and reset par() for next graphics and provides outputs (see below)
+# provide also positions for legend or additional text on the graph
+# use fun_prior_plot() before this function for initial inactivation of the axis drawings
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_open() to reinitialize graph parameters if par.reset = TRUE and custom.par = NULL
+# ARGUMENTS
+# x.side: axis at the bottom (1) or top (3) of the region figure. Write 0 for no change
+# x.log.scale: Log scale for the x-axis? Either TRUE or FALSE
+# x.categ: character vector representing the classes (levels()) to specify when the x-axis is qualititative(stripchart, boxplot)
+# x.categ.pos: position of the classes names (numeric vector of identical length than x.categ). If left NULL, this will be 1:length(levels())
+# x.lab: label of the x-axis. If x.side == 0 and x.lab != "", then x.lab is printed
+# x.axis.magnific: increase or decrease the value to increase or decrease the size of the x axis numbers. Also control the size of displayed categories
+# x.label.magnific: increase or decrease the value to increase or decrease the size of the x axis legend
+# x.dist.legend: increase the number to move x-axis legends away in inches (first number of mgp argument of par() but in inches)
+# x.nb.inter.tick: number of secondary ticks between main ticks on x-axis (only if not log scale). 0 means no secondary ticks
+# y.side: axis at the left (2) or right (4) of the region figure. Write 0 for no change
+# y.log.scale: Log scale for the y-axis? Either TRUE or FALSE
+# y.categ: classes (levels()) to specify when the y-axis is qualititative(stripchart, boxplot)
+# y.categ.pos: position of the classes names (numeric vector of identical length than y.categ). If left NULL, this will be 1:length(levels())
+# y.lab: label of the y-axis. If y.side == 0 and y.lab != "", then y.lab is printed
+# y.axis.magnific: increase or decrease the value to increase or decrease the size of the y axis numbers. Also control the size of displayed categories
+# y.label.magnific: increase or decrease the value to increase or decrease the size of the y axis legend
+# y.dist.legend: increase the number to move y-axis legends away in inches (first number of mgp argument of par() but in inches)
+# y.nb.inter.tick: number of secondary ticks between main ticks on y-axis (only if not log scale). 0 means non secondary ticks
+# text.angle: angle of the text when axis is qualitative
+# tick.length: length of the main ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
+# sec.tick.length: length of the secondary ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
+# bg.color: background color of the plot region. NULL for no color. BEWARE: cover/hide an existing plot !
+# grid.lwd: if non NULL, activate the grid line (specify the line width)
+# grid.col: grid line color (only if grid.lwd non NULL)
+# corner.text: text to add at the top right corner of the window
+# magnific.corner.text: increase or decrease the size of the text
+# par.reset: to reset all the graphics parameters. BEWARE: TRUE can generate display problems, mainly in graphic devices with multiple figure regions
+# just.label.add: just add axis labels (legend)? Either TRUE or FALSE. If TRUE, at least (x.side == 0 & x.lab != "") or (y.side == 0 & y.lab != "") must be set to display the corresponding x.lab or y.lab
+# custom.par: list that provides the parameters that reset all the graphics parameters. BEWARE: if NULL and par.reset == TRUE, the default par() parameters are used
+# RETURN
+# a list containing: 
+# $x.mid.left.dev.region: middle of the left margin of the device region, in coordinates of the x-axis
+# $x.left.dev.region: left side of the left margin (including the potential margin of the device region), in coordinates of the x-axis
+# $x.mid.right.dev.region: middle of the right margin of the device region, in coordinates of the x-axis
+# $x.right.dev.region: right side of the right margin (including the potential margin of the device region), in coordinates of the x-axis
+# $x.mid.left.fig.region: middle of the left margin of the figure region, in coordinates of the x-axis
+# $x.left.fig.region: left side of the left margin, in coordinates of the x-axis
+# $x.mid.right.fig.region: middle of the right margin of the figure region, in coordinates of the x-axis
+# $x.right.fig.region: right side of the right margin, in coordinates of the x-axis
+# $x.left.plot.region: left side of the plot region, in coordinates of the x-axis
+# $x.right.plot.region: right side of the plot region, in coordinates of the x-axis
+# $x.mid.plot.region: middle of the plot region, in coordinates of the x-axis
+# $y.mid.bottom.dev.region: middle of the bottom margin of the device region, in coordinates of the y-axis
+# $y.bottom.dev.region: bottom side of the bottom margin (including the potential margin of the device region), in coordinates of the y-axis
+# $y.mid.top.dev.region: middle of the top margin of the device region, in coordinates of the y-axis
+# $y.top.dev.region: top side of the top margin (including the potential margin of the device region), in coordinates of the y-axis
+# $y.mid.bottom.fig.region: middle of the bottom margin of the figure region, in coordinates of the y-axis
+# $y.bottom.fig.region: bottom of the bottom margin of the figure region, in coordinates of the y-axis
+# $y.mid.top.fig.region: middle of the top margin of the figure region, in coordinates of the y-axis
+# $y.top.fig.region: top of the top margin of the figure region, in coordinates of the y-axis
+# $y.top.plot.region: top of the plot region, in coordinates of the y-axis
+# $y.bottom.plot.region: bottom of the plot region, in coordinates of the y-axis
+# $y.mid.plot.region: middle of the plot region, in coordinates of the y-axis
+# $text: warning text
+# EXAMPLES
+# Example of log axis with log y-axis and unmodified x-axis:
+# prior.par <- fun_prior_plot(param.reinitial = TRUE, xlog.scale = FALSE, ylog.scale = TRUE, remove.label = TRUE, remove.x.axis = FALSE, remove.y.axis = TRUE, down.space = 1, left.space = 1, up.space = 1, right.space = 1, orient = 1, dist.legend = 0.5, tick.length = 0.5, box.type = "n", amplif.label = 1, amplif.axis = 1, display.extend = FALSE, return.par = TRUE) ; plot(1:100, log = "y") ; fun_post_plot(y.side = 2, y.log.scale = prior.par$ylog, x.lab = "Values", y.lab = "TEST", y.axis.magnific = 1.25, y.label.magnific = 1.5, y.dist.legend = 0.7, just.label.add = ! prior.par$ann)
+# Example of log axis with redrawn x-axis and y-axis:
+# prior.par <- fun_prior_plot(param.reinitial = TRUE) ; plot(1:100) ; fun_post_plot(x.side = 1, x.lab = "Values", y.side = 2, y.lab = "TEST", y.axis.magnific = 1, y.label.magnific = 2, y.dist.legend = 0.6)
+# example with margins in the device region:
+# windows(5,5) ; fun_prior_plot(box.type = "o") ; par(mai=c(0.5,0.5,0.5,0.5), omi = c(0.25,0.25,1,0.25), xaxs = "i", yaxs = "i") ; plot(0:10) ; a <- fun_post_plot(x.side = 0, y.side = 0) ; x <- c(a$x.mid.left.dev.region, a$x.left.dev.region, a$x.mid.right.dev.region, a$x.right.dev.region, a$x.mid.left.fig.region, a$x.left.fig.region, a$x.mid.right.fig.region, a$x.right.fig.region, a$x.right.plot.region, a$x.left.plot.region, a$x.mid.plot.region) ; y <- c(a$y.mid.bottom.dev.region, a$y.bottom.dev.region, a$y.mid.top.dev.region, a$y.top.dev.region, a$y.mid.bottom.fig.region, a$y.bottom.fig.region, a$y.mid.top.fig.region, a$y.top.fig.region, a$y.top.plot.region, a$y.bottom.plot.region, a$y.mid.plot.region) ; par(xpd = NA) ; points(x = rep(5, length(y)), y = y, pch = 16, col = "red") ; text(x = rep(5, length(y)), y = y, c("y.mid.bottom.dev.region", "y.bottom.dev.region", "y.mid.top.dev.region", "y.top.dev.region", "y.mid.bottom.fig.region", "y.bottom.fig.region", "y.mid.top.fig.region", "y.top.fig.region", "y.top.plot.region", "y.bottom.plot.region", "y.mid.plot.region"), cex = 0.65, col = grey(0.25)) ; points(y = rep(5, length(x)), x = x, pch = 16, col = "blue") ; text(y = rep(5, length(x)), x = x, c("x.mid.left.dev.region", "x.left.dev.region", "x.mid.right.dev.region", "x.right.dev.region", "x.mid.left.fig.region", "x.left.fig.region", "x.mid.right.fig.region", "x.right.fig.region", "x.right.plot.region", "x.left.plot.region", "x.mid.plot.region"), cex = 0.65, srt = 90, col = grey(0.25))
+# DEBUGGING
+# x.side = 0 ; x.log.scale = FALSE ; x.categ = NULL ; x.categ.pos = NULL ; x.lab = "" ; x.axis.magnific = 1.5 ; x.label.magnific = 1.5 ; x.dist.legend = 1 ; x.nb.inter.tick = 1 ; y.side = 0 ; y.log.scale = FALSE ; y.categ = NULL ; y.categ.pos = NULL ; y.lab = "" ; y.axis.magnific = 1.5 ; y.label.magnific = 1.5 ; y.dist.legend = 0.7 ; y.nb.inter.tick = 1 ; text.angle = 90 ; tick.length = 0.5 ; sec.tick.length = 0.3 ; bg.color = NULL ; grid.lwd = NULL ; grid.col = "white" ; corner.text = "" ; magnific.corner.text = 1 ; just.label.add = FALSE ; par.reset = FALSE ; custom.par = NULL # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
 }
-
-
-######## fun_close() #### close specific graphic windows
-
-
-# Check OK: clear to go Apollo
-fun_close <- function(kind = "pdf", return.text = FALSE){
-    # AIM
-    # close only specific graphic windows (devices)
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS:
-    # kind: vector, among c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff"), indicating the kind of graphic windows (devices) to close. BEWARE: either "windows", "quartz", "x11" or "X11" means that all the X11 GUI graphics devices will be closed, whatever the OS used
-    # return.text: print text regarding the kind parameter and the devices that were finally closed?
-    # RETURN
-    # text regarding the kind parameter and the devices that were finally closed
-    # EXAMPLES
-    # windows() ; windows() ; pdf() ; dev.list() ; fun_close(kind = c("pdf", "x11"), return.text = TRUE) ; dev.list()
-    # DEBUGGING
-    # kind = c("windows", "pdf") ; return.text = FALSE # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = kind, options = c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff"), fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = return.text, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    text <- paste0("THE REQUIRED KIND OF GRAPHIC DEVICES TO CLOSE ARE ", paste(kind, collapse = " "))
-    if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
-        if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
-            tempo <- kind %in% c("windows", "quartz", "x11", "X11")
-            kind[tempo] <- "windows" # term are replaced by what is displayed when using a <- dev.list() ; names(a)
-        }
-    }else if(Sys.info()["sysname"] == "Linux"){
-        if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
-            tempo.device <- suppressWarnings(try(X11(), silent = TRUE))[] # open a X11 window to try to recover the X11 system used
-            if( ! is.null(tempo.device)){
-                text <- paste0(text, "\nCANNOT CLOSE GUI GRAPHIC DEVICES AS REQUIRED BECAUSE THIS LINUX SYSTEM DOES NOT HAVE IT")
-            }else{
-                tempo <- kind %in% c("windows", "quartz", "x11", "X11")
-                kind[tempo] <- names(dev.list()[length(dev.list())]) # term are replaced by what is displayed when using a <- dev.list() ; names(a)
-                invisible(dev.off()) # close the X11 opened by tempo
-            }
-        }
-    }else{ # for macOS
-        if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
-            tempo <- kind %in% c("windows", "quartz", "x11", "X11")
-            kind[tempo] <- "quartz" # term are replaced by what is displayed when using a <- dev.list() ; names(a)
-        }
-    }
-    kind <- unique(kind)
-    if(length(dev.list()) != 0){
-        for(i in length(names(dev.list())):1){
-            if(names(dev.list())[i] %in% kind){
-                text <- paste0(text, "\n", names(dev.list())[i], " DEVICE NUMBER ", dev.list()[i], " HAS BEEN CLOSED")
-                invisible(dev.off(dev.list()[i]))
-            }
-        }
-    }
-    if(return.text == TRUE){
-        return(text)
-    }
+if(length(find("fun_open", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
 }
-
-
-################ Standard graphics
-
-
-######## fun_empty_graph() #### text to display for empty graphs
-
-
-
-
-
-# Check OK: clear to go Apollo
-fun_empty_graph <- function(text = NULL, text.size = 1, title = NULL, title.size = 1.5){
-    # AIM
-    # display an empty plot with a text in the middle of the window (for instance to specify that no plot can be drawn)
-    # ARGUMENTS
-    # text: character string of the message to display
-    # text.size: numeric value of the text size
-    # title: character string of the graph title
-    # title.size: numeric value of the title size (in points)
-    # REQUIRED PACKAGES
-    # none
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # RETURN
-    # an empty plot
-    # EXAMPLES
-    # simple example
-    # fun_empty_graph(text = "NO GRAPH")
-    # white page
-    # fun_empty_graph() # white page
-    # all the arguments
-    # fun_empty_graph(text = "NO GRAPH", text.size = 2, title = "GRAPH1", title.size = 1)
-    # DEBUGGING
-    # text = "NO GRAPH" ; title = "GRAPH1" ; text.size = 1
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    if( ! is.null(text)){
-        tempo <- fun_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(title)){
-        tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = title.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
-    par(ann=FALSE, xaxt="n", yaxt="n", mar = rep(1, 4), bty = "n", xpd = NA)
-    plot(1, 1, type = "n") # no display with type = "n"
-    x.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1])
-    y.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]))
-    if( ! is.null(text)){
-        text(x = 1, y = 1, labels = text, cex = text.size)
-    }
-    if( ! is.null(title)){
-        text(x = x.left.dev.region, y = y.top.dev.region, labels = title, adj=c(0, 1), cex = title.size)
-    }
-    par(ini.par)
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = x.side, options = c(0, 1, 3), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(x.categ)){
+tempo <- fun_check(data = x.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
 }
-
-
-################ gg graphics
-
-
-######## fun_gg_palette() #### ggplot2 default color palette
-
-
-
-
-
-# Check OK: clear to go Apollo
-fun_gg_palette <- function(n, kind = "std"){
-    # AIM
-    # provide colors used by ggplot2
-    # the interest is to use another single color that is not the red one used by default
-    # for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-    # ARGUMENTS
-    # n: number of groups on the graph
-    # kind: either "std" for standard gg colors, "dark" for darkened gg colors, or "light" for pastel gg colors
-    # REQUIRED PACKAGES
-    # none
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # RETURN
-    # the vector of hexadecimal colors
-    # EXAMPLES
-    # output of the function
-    # fun_gg_palette(n = 2)
-    # the ggplot2 palette when asking for 7 different colors
-    # plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7))
-    # selection of the 5th color of the ggplot2 palette made of 7 different colors
-    # plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7)[5])
-    # the ggplot2 palette made of 7 darkened colors
-    # plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7, kind = "dark"))
-    # the ggplot2 palette made of 7 lighten colors
-    # plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7, kind = "light"))
-    # DEBUGGING
-    # n = 0
-    # kind = "std"
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = n, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & n == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT MUST BE A NON ZERO INTEGER. HERE IT IS: ", paste(n, collapse = " "), "\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-        tempo <- fun_check(data = kind, options = c("std", "dark", "light"), length = 1, fun.name = function.name) ; eval(ee)
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    hues = seq(15, 375, length = n + 1)
-    hcl(h = hues, l = if(kind == "std"){65}else if(kind == "dark"){35}else if(kind == "light"){85}, c = 100)[1:n]
+if( ! is.null(x.categ.pos)){
+tempo <- fun_check(data = x.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
 }
-
-
-######## fun_gg_just() #### ggplot2 justification of the axis labeling, depending on angle
-
-
-
-
-
-# Check OK: clear to go Apollo
-fun_gg_just <- function(angle, axis){
-    # AIM
-    # provide correct justification for axis labeling, depending on the chosen angle
-    # ARGUMENTS
-    # angle: integer value of the text angle for the axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-    # axis: which axis for? Either "x" or "y"
-    # REQUIRED PACKAGES
-    # none
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # RETURN
-    # a list containing:
-    # $angle: the submitted angle (value potentially reduced to fit the [-360 ; 360] interval, e.g., 460 -> 100, without impact on the final angle displayed)
-    # $hjust: the horizontal justification
-    # $vjust: the vertical justification
-    # EXAMPLES
-    # fun_gg_just(angle = 45, axis = "x")
-    # fun_gg_just(angle = (360*2 + 45), axis = "y")
-    # output <- fun_gg_just(angle = 45, axis = "x") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = output$angle, hjust = output$hjust, vjust = output$vjust))
-    # output <- fun_gg_just(angle = -45, axis = "y") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.y = ggplot2::element_text(angle = output$angle, hjust = output$hjust, vjust = output$vjust)) + ggplot2::coord_flip()
-    # output1 <- fun_gg_just(angle = 90, axis = "x") ; output2 <- fun_gg_just(angle = -45, axis = "y") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = output1$angle, hjust = output1$hjust, vjust = output1$vjust), axis.text.y = ggplot2::element_text(angle = output2$angle, hjust = output2$hjust, vjust = output2$vjust))
-    # DEBUGGING
-    # angle = 45 ; axis = "y"
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = angle, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = axis, options = c("x", "y"), length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    # to get angle between -360 and 360
-    while(angle > 360){
-        angle <- angle - 360
-    }
-    while(angle < -360){
-        angle <- angle + 360
-    }
-    # end to get angle between -360 and 360
-    # justifications
-    if(axis == "x"){
-        if(angle == -360 | angle == -180 | angle == 0 | angle == 180 | angle == 360){
-            hjust <- 0.5
-            vjust <- 0.5
-        }else if(angle == -270 | angle == 90){
-            hjust <- 1
-            vjust <- 0.5
-        }else if(angle == -90 | angle == 270){
-            hjust <- 0
-            vjust <- 0.5
-        }else if((angle > -360 & angle < -270) | (angle > 0 & angle < 90)){
-            hjust <- 1
-            vjust <- 1
-        }else if((angle > -270 & angle < -180) | (angle > 90 & angle < 180)){
-            hjust <- 1
-            vjust <- 0
-        }else if((angle > -180 & angle < -90) | (angle > 180 & angle < 270)){
-            hjust <- 0
-            vjust <- 0
-        }else if((angle > -90 & angle < 0) | (angle > 270 & angle < 360)){
-            hjust <- 0
-            vjust <- 1
-        }
-    }else if(axis == "y"){
-        if(angle == -270 | angle == -90 | angle == 90 | angle == 270){
-            hjust <- 0.5
-            vjust <- 0.5
-        }else if(angle == -360 | angle == 0 | angle == 360){
-            hjust <- 1
-            vjust <- 0.5
-        }else if(angle == -180 | angle == 180){
-            hjust <- 0
-            vjust <- 0.5
-        }else if((angle > -360 & angle < -270) | (angle > 0 & angle < 90)){
-            hjust <- 1
-            vjust <- 0
-        }else if((angle > -270 & angle < -180) | (angle > 90 & angle < 180)){
-            hjust <- 0
-            vjust <- 0
-        }else if((angle > -180 & angle < -90) | (angle > 180 & angle < 270)){
-            hjust <- 0
-            vjust <- 1
-        }else if((angle > -90 & angle < 0) | (angle > 270 & angle < 360)){
-            hjust <- 1
-            vjust <- 1
-        }
-    }
-    # end justifications
-    output <- list(angle = angle, hjust = hjust, vjust = vjust)
-    return(output)
+tempo <- fun_check(data = x.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.nb.inter.tick, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.side, options = c(0, 2, 4), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(y.categ)){
+tempo <- fun_check(data = y.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
 }
-
-
-######## fun_gg_point_rast() #### ggplot2 raster scatterplot layer
-
-
-
-
-
-# Check OK: clear to go Apollo
-fun_gg_point_rast <- function(data = NULL, mapping = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, raster.width = NULL, raster.height = NULL, raster.dpi = 300, inactivate = TRUE, path.lib = NULL){
-    # AIM
-    # equivalent to ggplot2::geom_point() but in raster mode
-    # use it like ggplot2::geom_point() with the main raster.dpi additional argument
-    # WARNINGS
-    # can be long to generate the plot
-    # use a square plot region. Otherwise, the dots will have ellipsoid shape
-    # solve the transparency problems with some GUI
-    # this function is derived from the geom_point_rast() function, created by VPetukhov, and present in the ggrastr package (https://rdrr.io/github/VPetukhov/ggrastr/src/R/geom-point-rast.R). Has been placed here to minimize package dependencies
-    # ARGUMENTS
-    # classical arguments of geom_point(), shown here https://rdrr.io/github/VPetukhov/ggrastr/man/geom_point_rast.html
-    # raster.width : width of the result image (in inches). Default: deterined by the current device parameters
-    # raster.height: height of the result image (in inches). Default: deterined by the current device parameters
-    # raster.dpi: resolution of the result image
-    # inactivate: logical. Inactivate the fun.name argument of the fun_check() function? If TRUE, the name of the fun_check() function in error messages coming from this function. Use TRUE if fun_gg_point_rast() is used like this: eval(parse(text = "fun_gg_point_rast"))
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # ggplot2
-    # grid
-    # Cairo
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_pack()
-    # RETURN
-    # a raster scatter plot
-    # EXAMPLES
-    # Two pdf in the current directory
-    # set.seed(1) ; data1 = data.frame(x = rnorm(100000), y = rnorm(10000)) ; fun_open(pdf.name.file = "Raster") ; ggplot2::ggplot() + fun_gg_point_rast(data = data1, mapping = ggplot2::aes(x = x, y = y)) ; fun_open(pdf.name.file = "Vectorial") ; ggplot2::ggplot() + ggplot2::geom_point(data = data1, mapping = ggplot2::aes(x = x, y = y)) ; dev.off() ; dev.off()
-    # DEBUGGING
-    # 
-    # function name
-    if(all(inactivate == FALSE)){ # inactivate has to be used here but will be fully checked below
-        function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    }else if(all(inactivate == TRUE)){
-        function.name <- NULL
-    }else{
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN fun_gg_point_rast(): CODE INCONSISTENCY 1\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    if( ! is.null(data)){
-        tempo <- fun_check(data = data, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(mapping)){
-        tempo <- fun_check(data = mapping, class = "uneval", typeof = "list", fun.name = function.name) ; eval(ee) # aes() is tested
-    }
-    # stat and position not tested because too complicate
-    tempo <- fun_check(data = na.rm, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = show.legend, class = "vector", mode = "logical", length = 1, na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = inherit.aes, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(raster.width)){
-        tempo <- fun_check(data = raster.width, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(raster.height)){
-        tempo <- fun_check(data = raster.height, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = raster.dpi, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = inactivate, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-    fun_pack(req.package = c("grid"), path.lib = path.lib)
-    fun_pack(req.package = c("Cairo"), path.lib = path.lib)
-    # end package checking
-    # additional functions
-    DrawGeomPointRast <- function(data, panel_params, coord, na.rm = FALSE, raster.width = NULL, raster.height= NULL, raster.dpi = 300){
-        if (is.null(raster.width)){
-            raster.width <- par('fin')[1]
-        }
-        if (is.null(raster.height)){
-            raster.height <- par('fin')[2]
-        }
-        prev_dev_id <- dev.cur()
-        p <- ggplot2::GeomPoint$draw_panel(data, panel_params, coord)
-        dev_id <- Cairo::Cairo(type='raster', width = raster.width*raster.dpi, height = raster.height*raster.dpi, dpi = raster.dpi, units = 'px', bg = "transparent")[1]
-        grid::pushViewport(grid::viewport(width = 1, height = 1))
-        grid::grid.points(x = p$x, y = p$y, pch = p$pch, size = p$size,
-                          name = p$name, gp = p$gp, vp = p$vp, draw = T)
-        grid::popViewport()
-        cap <- grid::grid.cap()
-        dev.off(dev_id)
-        dev.set(prev_dev_id)
-        grid::rasterGrob(cap, x = 0, y = 0, width = 1, height = 1, default.units = "native", just = c("left","bottom"))
-    }
-    # end additional functions
-    # main code
-    GeomPointRast <- ggplot2::ggproto("GeomPointRast", ggplot2::GeomPoint, draw_panel = DrawGeomPointRast)
-    ggplot2::layer(
-        data = data, 
-        mapping = mapping, 
-        stat = stat, 
-        geom = GeomPointRast, 
-        position = position, 
-        show.legend = show.legend, 
-        inherit.aes = inherit.aes, 
-        params = list(
-            na.rm = na.rm, 
-            raster.width = raster.width, 
-            raster.height = raster.height, 
-            raster.dpi = raster.dpi, 
-            ...
-        )
-    )
-    # end main code
+if( ! is.null(y.categ.pos)){
+tempo <- fun_check(data = y.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
 }
-
-
-######## fun_gg_scatter() #### ggplot2 scatterplot + lines (up to 6 overlays totally)
-
-
-# Check OK: clear to go Apollo
-fun_gg_scatter <- function(data1, x, y, categ = NULL, legend.name = NULL, color = NULL, geom = "geom_point", alpha = 0.5, dot.size = 2, line.size = 0.5, xlim = NULL, xlab = NULL, xlog = "no", x.tick.nb = NULL, x.inter.tick.nb = NULL, x.left.extra.margin = 0.05, x.right.extra.margin = 0.05, ylim = NULL, ylab = NULL, ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0.05, xy.include.zero = FALSE, text.size = 12, title = "", title.text.size = 12, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
-    # AIM
-    # ggplot2 scatterplot with the possibility to overlay dots from up to 3 different data frames and lines from up to 3 different data frames (up to 6 overlays totally)
-    # for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-    # WARNINGS
-    # rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
-    # ARGUMENTS
-    # data1: a dataframe compatible with ggplot, or a list of data frames
-    # x: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for x-axis. write NULL for each "geom_hline" in geom argument
-    # y: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for y-axis. Write NULL for each "geom_vline" in geom argument
-    # categ: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for categories. If categ = NULL, no categories (no legend). Some of the list compartments can be NULL, and other not
-    # legend.name: character string list of character string (one compartment for each list compartment of data1) of the legend title. If legend.name = NULL and categ != NULL, then legend.name <- categ. Some of the list compartments can be NULL, and other not
-    # color: vector of character string or list of character vectors (one compartment for each list compartment of data1) for the colors of categ arguments. If color = NULL, default colors of ggplot2. If non null, it can be either: (1) a single color string (all the dots of the corresponding data1 will have this color, whatever categ NULL or not), (2) if categ non null, a vector of string colors, one for each class of categ (each color will be associated according to the alphabetical order of categ classes), (3) if categ non null, a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ and a single class of categ per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in color. If color is a list, some of the compartments can be NULL. In that case, a different grey color will be used for each NULL compartment
-    # geom: character string or list of character string (one compartment for each list compartment of data1) for the kind of plot. Either "geom_point" (scatterplot), "geom_line" (coordinates plotted then line connection from the lowest to highest coordinates), "geom_path" (line connection respecting the order in data1), "geom_hline" (horizontal line) or "geom_vline" (vertical line). BEWARE: for "geom_hline" or "geom_vline", (1) x or y argument must be NULL, respectively, (2) xlim or ylim argument must NOT be NULL, respectively, if only these kind of lines are drawn (if other geom present, then xlim = NULL and ylim = NULL will generate xlim and ylim defined by these other geom, which is not possible with "geom_hline" or "geom_vline"), (3) the function will draw n lines for n values in the x argument column name of the data1 data frame. If several colors required, the categ argument must be specified and the corresponding categ column name must exist in the data1 data frame with a different class name for each row
-    # alpha: numeric value (from 0 to 1) of the transparency or list of numeric values (one compartment for each list compartment of data1)
-    # dot.size: numeric value of point size
-    # line.size: numeric value of line size
-    # xlim: 2 numeric values for x-axis range. If NULL, range of x in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the xlim must be already in the corresponding log if xlog argument is not "no" (see below)
-    # xlab: a character string or expression for x-axis legend. If NULL, x of the first data frame in data1. Warning message if the elements in x are different between data frames in data1
-    # xlog: Either "no" (values in the x argument column of the data1 data frame are not log), "log2" (values in the x argument column of the data1 data frame are log2 transformed) or "log10" (values in the x argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-    # x.tick.nb: approximate number of desired label values on the x-axis (n argument of the the fun_scale() function)
-    # x.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if xlog is other than "no". In that case, play with the xlim and x.tick.nb arguments
-    # x.left.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to xlim. If different from 0, add the range of the axis * x.left.extra.margin (e.g., abs(xlim[2] - xlim[1]) * x.left.extra.margin) to the left of x-axis
-    # x.right.extra.margin: idem as x.left.extra.margin but to the bottom of x-axis
-    # ylim: 2 numeric values for y-axis range. If NULL, range of y in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the ylim must be already in the corresponding log if ylog argument is not "no" (see below)
-    # ylab: a character string or expression for y-axis legend. If NULL, y of the first data frame in data1. Warning message if the elements in y are different between data frames in data1
-    # ylog: Either "no" (values in the y argument column of the data1 data frame are not log), "log2" (values in the y argument column of the data1 data frame are log2 transformed) or "log10" (values in the y argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-    # y.tick.nb: approximate number of desired label values on the y-axis (n argument of the the fun_scale() function)
-    # y.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if ylog is other than "no". In that case, play with the ylim and y.tick.nb arguments
-    # y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis
-    # xy.include.zero: logical. Does xlim and ylim range include 0? Ok even if xlog = TRUE or ylog = TRUE because xlim and ylim must already be log transformed values
-    # text.size: numeric value of the size of the (1) axis numbers and axis legends and (2) texts in the graphic legend
-    # title: character string of the graph title
-    # title.text.size: numeric value of the title size (in points)
-    # show.legend: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend
-    # classic: logical. Use the classic theme (article like)?
-    # grid: logical. Draw horizontal and vertical lines in the background to better read the values? Not considered if classic = FALSE
-    # raster: logical. Dots in raster mode? If FALSE, dots from each geom_point from geom argument are in vectorial mode (bigger pdf and long to display if millions of dots). If TRUE, dots from each geom_point from geom argument are in matricial mode (smaller pdf and easy display if millions of dots, but long to generate the layer). If TRUE, the plot region will be square to avoid a bug in fun_gg_point_rast(). If TRUE, solve the transparency problem with some GUI. Overriden by vectorial.limit if non NULL
-    # vectorial.limit: positive integer value indicating the limit of the dot number above which geom_point from geom argument switch from vectorial mode to raster mode (see the raster argument). If any layer is raster, then the region plot will be square to avoid a bug in fun_gg_point_rast(). Inactive the raster argument if non NULL
-    # return: logical. Return the graph info?
-    # plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
-    # add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # ggplot2
-    # if raster plots are drawn (see the raster and vectorial.limit arguments):
-    # Cairo
-    # grid
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_gg_palette()
-    # fun_gg_point_rast()
-    # fun_pack()
-    # fun_check()
-    # RETURN
-    # a scatter plot is plot argument is TRUE
-    # a list of the graph info if return argument is TRUE:
-    # $data: the graphic info coordinates
-    # $removed.row.nb: a list of the removed rows numbers in data frames (because of NA). NULL if no row removed
-    # $removed.rows: a list of the removed rows in data frames (because of NA). NULL if no row removed
-    # $axes: the x-axis and y-axis info
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    ## NICE REPRESENTATION
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = expression(paste("TIME (", 10^-20, " s)")), ylog = "log10", y.tick.nb = 5, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, classic = TRUE)
-    ## SINGLE GEOMETRIC LAYER
-    ### simple example (1) of scatter plot using the classical writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time")
-    ### simple example (2) of scatter plot, identical to (1) but using the list writting. Here, a list of one compartment, systematically named L1, is provided to the data1, x, y, categ, geom and alpha. Contrary to example (1), the geom and alpha argument have to be included because the default value are not lists (if data1 is a list, all the x, y, categ, legend.name, color, geom and alpha must also be list if non NULL)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
-    ### color of dots. Example (1) using the classical writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", color = "blue")
-    ### color of dots. Example (2) using the list writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), color = list(L1 = "blue"), geom = list(L1 = "geom_point"), alpha = list(L1 = 1))
-    ### From here, classical writting is use for single element in data1 and list writting otherwise
-    ### color of dots. Example (3) when dots are in different categories. Note that categ argument controls the legend display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group")
-    ### color of dots. Example (4) when dots are in different categories. A single color mentionned is applied to all the dots
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = "coral")
-    ### color of dots. Example (5) when dots are in different categories. Numbers can be used if ggplot colors are desired
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = 2)
-    ### color of dots. Example (6) when dots are in different categories, with one color per category (try also color = 2:1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = c("coral", "green"))
-    ### color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B"), col = rep(c("coral", "green"), each = 3)) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = obs1$col)
-    ### color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way (ggplot colors)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = as.numeric(obs1$group))
-    ### legend name
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", legend.name = "CLASSES")
-    ### different geom features. Example (1) with geom_line kind of lines
-    # obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_line", categ = "group")
-    ### different geom features. Example (2) with geom_path kind of lines (see the difference with (1))
-    # obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_path", categ = "group")
-    ### different geom features. Example (3) with geom_hline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
-    # obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = NULL, y = "km", geom = "geom_hline", categ = "group", xlim = c(1,10))
-    ### different geom features. Example (4) with geom_vline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
-    # obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = NULL, geom = "geom_vline", categ = "group", ylim = c(1,10))
-    ## MULTI GEOMETRIC LAYERS
-    ### Note that in subsequent examples, names of list compartments are systematically referred to as L1, L2, etc., to show the correspondence between the arguments data1, x, y, categ, etc.
-    ### single layer (as examples above)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
-    ### simple example of two layers
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    ### color of dots. Example (1)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    ### color of dots. Example (2) of the legend display. The categ argument must be supplied. Make a fake categorical colum in the data frame if necessary (as in this example). The categ argument triggers the legend display. The legend.name argument is used to remove the legend title of each layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = "GROUP1") ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = "GROUP2") ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = NULL, L2 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    ### color of dots. Example (3) when dots are in different categories (default colors)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    ### color of dots. Example (3) when dots are in different categories. A single color mentionned per layer is applied to all the dots of the layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    ### color of dots. Example (5) when dots are in different categories, with one color per category in each layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = c("coral", "blue"), L2 = c("green", "black")))
-    ### color of dots. Example (4) when dots are in different categories. Numbers can be used if ggplot colors are desired
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = 1:2, L2 = c(4, 7)))
-    ### color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers). BEWARE: in color argument, if the column of the data frame does not exist, color can be still displayed (L2 = obs2$notgood is equivalent to L2 = NULL). Such situation is reported in the warning messages (see below)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = obs1$col1, L2 = obs2$col2))
-    ### color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way is not recommended with mutiple layers
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = as.numeric(obs1$group1), L2 = as.numeric(obs2$group2)))
-    ### legend name
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = "CLASS A", L2 = "CLASS G"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    ### different geom features. Example (1) with 5 layers. Note that order in data1 defines the overlay order (from below to above) and the order in the legend (from top to bottom)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; obs3 <- data.frame(time = c(29, 31), group3 = c("HORIZ.THRESHOLD.1", "HORIZ.THRESHOLD.2")) ; obs4 <- data.frame(km = 26, group4 = "VERTIC.THRESHOLD") ; obs5 <- data.frame(km = seq(1, 100, 0.1), time = 7*seq(1, 100, 0.1)^0.5, group5 = "FUNCTION") ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2, L3 = obs3, L4 = obs4, L5 = obs5), x = list(L1 = "km", L2 = "km", L3 = NULL, L4 = "km", L5 = "km"), y = list(L1 = "time", L2 = "time", L3 = "time", L4 = NULL, L5 = "time"), categ = list(L1 = "group1", L2 = "group2", L3 = "group3", L4 = "group4", L5 = "group5"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline", L4 = "geom_vline", L5 = "geom_line"), alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5, L4 = 0.5, L5 = 0.5), xlim = c(10, 40), ylim = c(10, 40), classic = TRUE, line.size = 0.75)
-    ### layer transparency. One transparency defined by layer (from 0 invisible to 1 opaque). Note that for lines, transparency in not applied in the legend to prevent a ggplot2 bug (https://github.com/tidyverse/ggplot2/issues/2452)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 1, L2 = 0.1))
-    ### other different example of mutiple geom features are shown in the fun_segmentation function
-    ## OTHER GRAPHIC ARGUMENTS
-    ### dot size (line.size argument controls size of lines)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", dot.size = 5)
-    ### axis management: examples are shown for x-axis but are identical for y-axis
-    ### x-axis limits. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(-1, 25))
-    ### x-axis limits. Example (2) showing that order matters in ylim argument
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(25, -1))
-    ### log scale. Example (1). BEWARE: x column must be log, otherwise incoherent scale (see below warning message with the return argument)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10")
-    ### log scale. Example (2). BEWARE: values of the xlim must be in the corresponding log
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(1, 10))
-    ### tick number. Example (1). Note that the final number shown is approximate
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.tick.nb = 6)
-    ### tick number. Example (2) using a log2 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log2", x.tick.nb = 6)
-    ### tick number. Example (3) using a log10 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.tick.nb = 6)
-    ### tick number. Example (4) using a log10 scale: the reverse x-axis correctly deal with log10 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(7, 2))
-    ### secondary tick number. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.inter.tick.nb = 4)
-    ### secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.inter.tick.nb = 4)
-    ### extra margins. To avoid dot cuts
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.left.extra.margin = 0.25, x.right.extra.margin = 0.25)
-    ### include zero in both the x-axis and y-xis
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xy.include.zero = TRUE)
-    ### graph title, text size and legend display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", text.size = 8, title = "GRAPH1", title.text.size = 16, show.legend = TRUE)
-    ### raster display. This switchs from vectorial mode to raster mode. The display can takes some time, but this is easier to export and handle than vectorial display
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(100000, 22, 3), time = rnorm(100000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", raster = TRUE)
-    ### classic representation (use grid = TRUE to display the background lines of the y axis ticks)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", classic = TRUE, grid = FALSE)
-    ### graphic info. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", return = TRUE)
-    ### graphic info. Example (2) of assignation and warning message display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; output <- fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", return = TRUE) ; cat(output$warnings)
-    ### add ggplot2 functions
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", add = "+ggplot2::theme_classic()")
-    ### all the arguments
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = "TIME (s)", ylog = "log10", y.tick.nb = 5, y.inter.tick.nb = NULL, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, text.size = 12, title = "", title.text.size = 8, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
-    # DEBUGGING
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; data1 = list(L1 = obs1, L2 = obs2) ; x = list(L1 = "km", L2 = "km") ; y = list(L1 = "time", L2 = "time") ; categ = list(L1 = "group1", L2 = "group2") ; legend.name = NULL ; color = list(L1 = 4:5, L2 = 7:8) ; geom = list(L1 = "geom_point", L2 = "geom_point") ; alpha = list(L1 = 0.5, L2 = 0.5) ; dot.size = 3 ; line.size = 0.5 ; xlim = c(25, 0) ; xlab = "KM" ; xlog = "no" ; x.tick.nb = 10 ; x.inter.tick.nb = 1 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = c(1, 25) ; ylab = "TIME (s)" ; ylog = "log2" ; y.tick.nb = 5 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")), L2 = data.frame(a = (1:6)*2, b = ((1:6)^2)*2, group = c("A1", "A1", "A1", "B1", "B1", "B1")), L3 = data.frame(a = (1:6)*3, b = ((1:6)^2)*3, group3 = c("A4", "A5", "A6", "A7", "B4", "B5"))) ; data1$L1$a[3] <- NA ; data1$L1$group[5] <- NA ; data1$L3$group3[4] <- NA ; x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = NULL) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = "a") ; categ = list(L1 = "group", L2 = NULL, L3 = NULL) ; legend.name = NULL ; color = NULL ; geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline") ; alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5) ; dot.size = 1 ; line.size = 0.5 ; xlim = c(14, 4) ; xlab = NULL ; xlog = "log10" ; x.tick.nb = 10 ; x.inter.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = c(60, 5) ; ylab = NULL ; ylog = "log10" ; y.tick.nb = 10 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # data1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; data1 ; x = NULL; y = "km"; categ = "group"; legend.name = NULL ; color = NULL ; geom = "geom_hline"; alpha = 0.5 ; dot.size = 1 ; line.size = 0.5 ; xlim = c(1,10) ; xlab = NULL ; xlog = "log10" ; x.tick.nb = 10 ; x.inter.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = NULL ; ylab = expression(paste("TIME (", 10^-20, " s)")) ; ylog = "log10" ; y.tick.nb = 10 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_gg_palette", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_gg_point_rast", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_point_rast() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # reserved words to avoid bugs (used in this function)
-    reserved.words <- c("fake_x", "fake_y", "fake_categ", "color")
-    # end reserved words to avoid bugs (used in this function)
-    # check list lengths (and names of data1 compartments if non name present)
-    warning <- NULL
-    if(all(class(data1) == "list")){
-        if(length(data1) > 6){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A LIST OF 6 DATA FRAMES MAXIMUM (6 OVERLAYS MAX)\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(is.null(names(data1))){
-            names(data1) <- paste0("L", 1:length(data1))
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL NAME COMPARTMENT OF data1 LIST -> NAMES RESPECTIVELY ATTRIBUTED TO EACH COMPARTMENT:\n", paste(names(data1), collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        if( ! is.null(x)){
-            if( ! (all(class(x) == "list") & length(data1) == length(x))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }else{
-            x <- vector("list", length(data1))
-        }
-        if( ! is.null(y)){
-            if( ! (all(class(y) == "list") & length(data1) == length(y))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }else{
-            y <- vector("list", length(data1))
-        }
-        if( ! is.null(categ)){
-            if( ! (all(class(categ) == "list") & length(data1) == length(categ))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-        if( ! is.null(legend.name)){
-            if( ! (all(class(legend.name) == "list") & length(data1) == length(legend.name))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-        if( ! is.null(color)){
-            if( ! (all(class(color) == "list") & length(data1) == length(color))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-        if( ! (all(class(geom) == "list") & length(data1) == length(geom))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if( ! (all(class(alpha) == "list") & length(data1) == length(alpha))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end check list lengths (and names of data1 compartments if non name present)
-    # conversion into lists
-    if(all(is.data.frame(data1))){
-        data1 <- list(L1 = data1)
-        if(all(class(x) == "list")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            x <- list(L1 = x)
-        }
-        if(all(class(y) == "list")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            y <- list(L1 = y)
-        }
-        if( ! is.null(categ)){
-            if(all(class(categ) == "list")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                categ <- list(L1 = categ)
-            }
-        }
-        if( ! is.null(legend.name)){
-            if(all(class(legend.name) == "list")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                legend.name <- list(L1 = legend.name)
-            }
-        }
-        if( ! is.null(color)){
-            if(all(class(color) == "list")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                color <- list(L1 = color)
-            }
-        }
-        if(all(class(geom) == "list")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            geom <- list(L1 = geom)
-        }
-        if(all(class(alpha) == "list")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            alpha <- list(L1 = alpha)
-        }
-    }
-    # end conversion into lists
-    # legend name filling
-    if(is.null(legend.name) & ! is.null(categ)){
-        legend.name <- categ
-    }else if(is.null(legend.name) & is.null(categ)){
-        legend.name <- vector("list", length(data1)) # null list
-    }
-    # end legend name filling
-    # ini categ for legend display
-    fin.lg.disp <- vector("list", 6) # will be used at the end to display or not legends
-    fin.lg.disp[] <- FALSE
-    legend.disp <- vector("list", length(data1))
-    if(is.null(categ) | show.legend == FALSE){
-        legend.disp[] <- FALSE
-    }else{
-        for(i2 in 1:length(data1)){
-            if(is.null(categ[[i2]])){
-                legend.disp[[i2]] <- FALSE
-            }else{
-                legend.disp[[i2]] <- TRUE
-            }
-        }
-    }
-    # end ini categ for legend display
-    # integer colors into gg_palette
-    tempo.check.color <- NULL
-    for(i1 in 1:length(data1)){
-        if(any(is.na(color[[i1]]))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": color ARGUMENT CANNOT CONTAIN NA\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        tempo.check.color <- c(tempo.check.color, fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem)
-    }
-    tempo.check.color <- ! tempo.check.color # invert TRUE and FALSE because if integer, then problem = FALSE
-    if(any(tempo.check.color == TRUE)){ # convert integers into colors
-        tempo.integer <- unlist(color[tempo.check.color])
-        tempo.color <- fun_gg_palette(max(tempo.integer, na.rm = TRUE))
-        for(i1 in 1:length(data1)){
-            if(tempo.check.color[i1] == TRUE){
-                color[[i1]] <-tempo.color[color[[i1]]]
-            }
-        }
-    }
-    # end integer colors into gg_palette
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    compart.null.color <- 0 # will be used to attribute a color when color is non NULL but a compartment of color is NULL
-    data1.ini <- data1 # to report NA removal
-    removed.row.nb <- vector("list", length = length(data1)) # to report NA removal
-    removed.rows <- vector("list", length = length(data1)) # to report NA removal
-    for(i1 in 1:length(data1)){
-        tempo <- fun_check(data = data1[[i1]], data.name = ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-        # reserved word checking
-        if(any(names(data1[[i1]]) %in% reserved.words)){ # I do not use fun_name_change() because cannot control y before creating "fake_y". But ok because reserved are not that common
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COLUMN NAMES OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " ARGUMENT CANNOT BE ONE OF THESE WORDS\n", paste(reserved.words, collapse = " "), "\nTHESE ARE RESERVED FOR THE ", function.name, " FUNCTION\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        # end reserved word checking
-        # check of geom now because required for y argument
-        tempo <- fun_check(data = geom[[i1]], data.name = ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), options = c("geom_point", "geom_line", "geom_path", "geom_hline", "geom_vline"), length = 1, fun.name = function.name) ; eval(ee)
-        # end check of geom now because required for y argument
-        if(is.null(x[[i1]])){
-            if(all(geom[[i1]] != "geom_hline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": x ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "x", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else{
-                x[[i1]] <- "fake_x"
-                data1[[i1]] <- cbind(data1[[i1]], fake_x = NA)
-                data1[[i1]][, "fake_x"] <- as.numeric(data1[[i1]][, "fake_x"])
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_x\" FOR FINAL DRAWING")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-        }else{
-            if(all(geom[[i1]] == "geom_hline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": x ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-            tempo <- fun_check(data = x[[i1]], data.name = ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-        if(is.null(y[[i1]])){
-            if(all(geom[[i1]] != "geom_vline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": y ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else{
-                y[[i1]] <- "fake_y"
-                data1[[i1]] <- cbind(data1[[i1]], fake_y = NA)
-                data1[[i1]][, "fake_y"] <- as.numeric(data1[[i1]][, "fake_y"])
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_y\" FOR FINAL DRAWING")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-        }else{
-            if(all(geom[[i1]] == "geom_vline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": y ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-            tempo <- fun_check(data = y[[i1]], data.name = ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-        if( ! (x[[i1]] %in% names(data1[[i1]]))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        if( ! (y[[i1]] %in% names(data1[[i1]]))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        # na detection and removal (done now to be sure of the correct length of categ)
-        if(x[[i1]] == "fake_x" & y[[i1]] == "fake_y"){ # because the code cannot accept to be both "fake_x" and "fake_y" at the same time
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\nTHE CODE CANNOT ACCEPT x AND y TO BE \"fake_x\" AND \"fake_y\" IN THE SAME DATA FRAME ", i1, " \n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(is.na(data1[[i1]][, c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]))){
-            tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]), FUN = is.na), FUN = which))
-            removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb)
-            # report of removed rows will be performed at the very end
-            data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ]
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA DETECTED IN COLUMN ", if(x[[i1]] == "fake_x"){""}else{ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1))}, if(x[[i1]] != "fake_x" & y[[i1]] != "fake_y"){" AND "}, if(y[[i1]] == "fake_y"){""}else{ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1))}, " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ". CORRESPONDING ROWS HAVE BEEN REMOVED (SEE $removed.row.nb AND $removed.rows)")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        # end na detection and removal (done now to be sure of the correct length of categ)
-        tempo <- fun_check(data = data1[[i1]][, x[[i1]]], data.name = ifelse(length(x) == 1, "x OF data1", paste0("x NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "numeric", na.contain = ifelse(x[[i1]] == "fake_x", TRUE, FALSE), fun.name = function.name) ; eval(ee)
-        tempo <- fun_check(data = data1[[i1]][, y[[i1]]], data.name = ifelse(length(y) == 1, "y OF data1", paste0("y NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "numeric", na.contain = ifelse(y[[i1]] == "fake_y", TRUE, FALSE), fun.name = function.name) ; eval(ee)
-        if(( ! is.null(categ)) & ( ! is.null(categ[[i1]]))){ # if categ[[i1]] = NULL, fake_categ will be created later on
-            tempo <- fun_check(data = categ[[i1]], data.name = ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
-            if( ! (categ[[i1]] %in% names(data1[[i1]]))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-            # na detection and removal (done now to be sure of the correct length of categ)
-            if(any(is.na(data1[[i1]][, categ[[i1]]]))){
-                tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][categ[[i1]]]), FUN = is.na), FUN = which))
-                removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb)
-                # report of removed rows will be performed at the very end
-                data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ]
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE CATEGORY COLUMN:\n", paste(categ[[i1]], collapse = " "), "\nCONTAINS NA")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-            # end na detection and removal (done now to be sure of the correct length of categ)
-            tempo1 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "character", na.contain = FALSE, fun.name = function.name, print = FALSE)
-            tempo2 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "factor", na.contain = FALSE, fun.name = function.name, print = FALSE)
-            if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), " MUST BE A FACTOR OR CHARACTER VECTOR\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo1$problem == FALSE){
-                data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                
-            }
-            if(geom[[i1]] == "geom_vline" | geom[[i1]] == "geom_hline"){
-                if(length(unique(data1[[i1]][, categ[[i1]]])) != nrow(data1[[i1]])){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(geom) == 1, "geom OF data1", paste0("geom NUMBER ", i1, " OF data1 NUMBER ", i1)), " ARGUMENT IS ", geom[[i1]], ", MEANING THAT ", ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), " MUST HAVE A DIFFERENT CLASS PER LINE OF data1 (ONE x VALUE PER CLASS)\n\n================\n\n")
-                    cat(tempo.cat)
-                    arg.check <- c(arg.check, TRUE)
-                }
-            }
-        }else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # if categ[[i1]] = NULL, fake_categ will be created. BEWARE: is.null(categ[[i1]]) means no legend display (see above), because categ has not been precised. This also means a single color for data1[[i1]]
-            if(length(color[[i1]]) > 1){ # 0 means is.null(color[[i1]]) and 1 is ok -> single color for data1[[i1]]
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT BUT CORRESPONDING COLORS IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " HAS LENGTH OVER 1\n", paste(color[[i1]], collapse = " "), "\nWHICH IS NOT COMPATIBLE WITH NULL CATEG -> COLOR RESET TO A SINGLE COLOR")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                color[[i1]] <- NULL # will provide a single color below
-            }
-            categ[[i1]] <- "fake_categ"
-            data1[[i1]] <- cbind(data1[[i1]], fake_categ = "")
-            # inactivated because give a different color to different "Line_" categ while a single color for all the data1[[i1]] required. Thus, put back after the color management
-            # if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
-            # data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
-            # }else{
-            data1[[i1]][, "fake_categ"] <- data1[[i1]][, "fake_categ"] # as.numeric("") create a vector of NA but class numeric
-            # }
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_categ\" FOR FINAL DRAWING")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        if( ! is.null(legend.name[[i1]])){
-            tempo <- fun_check(data = legend.name[[i1]], data.name = ifelse(length(legend.name) == 1, "legend.name", paste0("legend.name NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
-        }
-        if( ! is.null(color)){ # if color is NULL, will be filled later on
-            # check the nature of color
-            if(is.null(color[[i1]])){
-                compart.null.color <- compart.null.color + 1
-                color[[i1]] <- grey(compart.null.color / 8) # cannot be more than 7 overlays. Thus 7 different greys. 8/8 is excluded because white dots
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL COLOR IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", SINGLE COLOR ", paste(color[[i1]], collapse = " "), " HAS BEEN ATTRIBUTED")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-            tempo1 <- fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
-            tempo2 <- fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
-            if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if( ! (all(color[[i1]] %in% colors() | grepl(pattern = "^#", color[[i1]])))){ # check that all strings of low.color start by #
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(color[[i1]]), collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-            if(any(is.na(color[[i1]]))){
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE COLORS:\n", paste(unique(color[[i1]]), collapse = " "), "\nCONTAINS NA")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-            # end check the nature of color
-            # check the length of color
-            if(is.null(categ) & length(color[[i1]]) != 1){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF categ IS NULL\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if( ! is.null(categ)){
-                # No problem of NA management by ggplot2 because already removed
-                if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IS NULL\n\n================\n\n")
-                    cat(tempo.cat)
-                    arg.check <- c(arg.check, TRUE)
-                }else if(length(color[[i1]]) == length(unique(data1[[i1]][, categ[[i1]]]))){ # here length(color) is equal to the different number of categ
-                    data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE FOLLOWING COLORS:\n", paste(color[[i1]], collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "))
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }else if(length(color[[i1]]) == length(data1[[i1]][, categ[[i1]]])){# here length(color) is equal to nrow(data1[[i1]]) -> Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
-                    data1[[i1]] <- cbind(data1[[i1]], color = color[[i1]])
-                    tempo.check <- unique(data1[[i1]][ , c(categ[[i1]], "color")])
-                    if( ! (nrow(data1[[i1]]) == length(color[[i1]]) & nrow(tempo.check) == length(unique(data1[[i1]][ , categ[[i1]]])))){
-                        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF THIS categ:\n", paste(unique(mapply(FUN = "paste", data1[[i1]][ ,categ[[i1]]], data1[[i1]][ ,"color"])), collapse = "\n"), "\n\n================\n\n")
-                        cat(tempo.cat)
-                        arg.check <- c(arg.check, TRUE)
-                    }else{
-                        data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                        color[[i1]] <- unique(color[[i1]][order(data1[[i1]][, categ[[i1]]])]) # Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
-                        tempo.warning <- paste0(ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ AS:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\n", paste(color[[i1]], collapse = " "))
-                        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                    }
-                }else if(length(color[[i1]]) == 1){
-                    data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                    color[[i1]] <- rep(color[[i1]], length(levels(data1[[i1]][, categ[[i1]]])))
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", COLOR HAS LENGTH 1 MEANING THAT ALL THE DIFFERENT CLASSES OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), "\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(color[[i1]], collapse = " "))
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }else{
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES, OR (3) THE LENGTH OF THE CLASSES IN THIS COLUMN. HERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LENGTH ", length(data1[[i1]][, categ[[i1]]]), " AND CATEG CLASS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
-                    cat(tempo.cat)
-                    arg.check <- c(arg.check, TRUE)
-                }
-            }
-        }
-        if((geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline") & ! is.null(categ[[i1]])){ # add here after the color management, to deal with the different lines to plot inside any data[[i1]]
-            if(categ[[i1]] == "fake_categ"){
-                data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
-            }
-        }
-        tempo <- fun_check(data = alpha[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    }
-    if(length(data1) > 1){
-        if(length(unique(unlist(x))) > 1){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE x ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(x), collapse = " "), "\nX-AXIS OVERLAYING DIFFERENT VARIABLES?")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-    }
-    if(length(data1) > 1){
-        if(length(unique(unlist(y))) > 1){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE y ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(y), collapse = " "), "\nY-AXIS OVERLAYING DIFFERENT VARIABLES?")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-    }
-    if(sum(geom %in% "geom_point") > 3){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN FOUR \"geom_point\" ELEMENTS\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }else if(length(geom) - sum(geom %in% "geom_point") > 3){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE LINE ELEMENTS\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    if( ! is.null(xlim)){
-        tempo <- fun_check(data = xlim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & any(xlim %in% c(Inf, -Inf))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": xlim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(xlab)){
-        if(all(class(xlab) %in% "expression")){ # to deal with math symbols
-            tempo <- fun_check(data = xlab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-        }else{
-            tempo <- fun_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-    }
-    tempo <- fun_check(data = xlog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & xlog != "no"){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": xlog ARGUMENT SET TO ", xlog, ".\nVALUES FROM THE x ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(xlog), " TRANSFORMED, AS THE xlog ARGUMENT JUST MODIFIES THE AXIS SCALE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        if( ! is.null(xlim)){
-            if(any(xlim <= 0)){
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": xlim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF xlog ARGUMENT IS SET TO ", xlog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }else if(any( ! is.finite(if(xlog == "log10"){10^xlim}else{2^xlim}))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": xlim ARGUMENT RETURNS INF WITH THE xlog ARGUMENT SET TO ", xlog, "\nAS SCALE COMPUTATION IS ", ifelse(xlog == "log10", 10, 2), "^xlim:\n", paste(ifelse(xlog == "log10", 10, 2)^xlim, collapse = " "), "\nARE YOU SURE THAT xlim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(xlim, collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-        }
-    }
-    if( ! is.null(x.tick.nb)){
-        tempo <- fun_check(data = x.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & x.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(x.inter.tick.nb)){
-        tempo <- fun_check(data = x.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & x.inter.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = x.left.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.right.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(ylim)){
-        tempo <- fun_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & any(ylim %in% c(Inf, -Inf))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(ylab)){
-        if(all(class(ylab) %in% "expression")){ # to deal with math symbols
-            tempo <- fun_check(data = ylab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-        }else{
-            tempo <- fun_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-    }
-    tempo <- fun_check(data = ylog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ylog != "no"){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, ".\nVALUES FROM THE y ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(ylog), " TRANSFORMED, AS THE ylog ARGUMENT JUST MODIFIES THE AXIS SCALE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        if( ! is.null(ylim)){
-            if(any(ylim <= 0)){
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF ylog ARGUMENT IS SET TO ", ylog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }else if(any( ! is.finite(if(ylog == "log10"){10^ylim}else{2^ylim}))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT RETURNS INF WITH THE ylog ARGUMENT SET TO ", ylog, "\nAS SCALE COMPUTATION IS ", ifelse(ylog == "log10", 10, 2), "^ylim:\n", paste(ifelse(ylog == "log10", 10, 2)^ylim, collapse = " "), "\nARE YOU SURE THAT ylim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(ylim, collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-        }
-    }
-    if( ! is.null(y.tick.nb)){
-        tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & y.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(y.inter.tick.nb)){
-        tempo <- fun_check(data = y.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & y.inter.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = xy.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    # inactivated because xlim and ylim already log transformed
-    # if(tempo$problem == FALSE & ylog == TRUE & xy.include.zero == TRUE){
-    #tempo.warning <- paste0("FROM FUNCTION ", function.name, ": BOTH ylog AND xy.include.zero ARGUMENTS SET TO TRUE -> xy.include.zero ARGUMENT RESET TO FALSE")
-    # warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    # }
-    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = show.legend, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = raster, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(vectorial.limit)){
-        tempo <- fun_check(data = vectorial.limit, class = "vector", typeof = "integer", neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(add)){
-        tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string finished by )
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-    # packages Cairo and grid tested by fun_gg_point_rast()
-    # end package checking
-    # main code
-    # axes management
-    if(is.null(xlim)){
-        if(any(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE x COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        xlim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. xlim added here. If NULL, ok if x argument has values
-        if(suppressWarnings(all(xlim %in% c(Inf, -Inf)))){
-            if(all(unlist(geom) == "geom_hline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_hline KIND OF LINES IF xlim ARGUMENT IS SET TO NULL, SINCE NO X-AXIS DEFINED (", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " xlim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(xlim, collapse = " "), "\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-    }
-    xlim.order <- order(xlim) # to deal with inverse axis
-    # print(xlim.order)
-    xlim <- sort(xlim)
-    xlim[1] <- xlim[1] - abs(xlim[2] - xlim[1]) * ifelse(diff(xlim.order) > 0, x.right.extra.margin, x.left.extra.margin) # diff(xlim.order) > 0 means not inversed axis
-    xlim[2] <- xlim[2] + abs(xlim[2] - xlim[1]) * ifelse(diff(xlim.order) > 0, x.left.extra.margin, x.right.extra.margin) # diff(xlim.order) > 0 means not inversed axis
-    if(xy.include.zero == TRUE){ # no need to check xlog != "no" because done before
-        xlim <- range(c(xlim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    }
-    xlim <- xlim[xlim.order]
-    if(any(is.na(xlim))){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(is.null(ylim)){
-        if(any(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE y COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        ylim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. ylim added here. If NULL, ok if y argument has values
-        if(suppressWarnings(all(ylim %in% c(Inf, -Inf)))){ # happen when y is only NULL
-            if(all(unlist(geom) == "geom_vline")){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_vline KIND OF LINES IF ylim ARGUMENT IS SET TO NULL, SINCE NO Y-AXIS DEFINED (", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " ylim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(ylim, collapse = " "), "\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-    }
-    ylim.order <- order(ylim) # to deal with inverse axis
-    ylim <- sort(ylim)
-    ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(ylim.order) > 0 means not inversed axis
-    ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(ylim.order) > 0 means not inversed axis
-    if(xy.include.zero == TRUE){ # no need to check ylog != "no" because done before
-        ylim <- range(c(ylim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    }
-    ylim <- ylim[ylim.order]
-    if(any(is.na(ylim))){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    # end axes management
-    # create a fake categ if NULL to deal with legend display
-    if(is.null(categ)){
-        categ <- vector("list", length(data1))
-        categ[] <- "fake_categ"
-        for(i2 in 1:length(data1)){
-            data1[[i2]] <- cbind(data1[[i2]], fake_categ = "")
-            if(geom[[i2]] == "geom_hline" | geom[[i2]] == "geom_vline"){
-                data1[[i2]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i2]]))
-            }
-        }
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL categ ARGUMENT -> FAKE COLUMN ADDED TO EACH DATA FRAME IN data1, NAMED \"fake_categ\" AND FILLED WITH \"\"")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    # end create a fake categ if NULL to deal with legend display
-    # vector of color with length as in data1
-    if(is.null(color)){
-        color <- vector("list", length(data1))
-        length.categ.list <- lapply(lapply(mapply(FUN = "[[", data1, categ, SIMPLIFY = FALSE), FUN = unique), FUN = function(x){length(x[ ! is.na(x)])})
-        length.categ.list[sapply(categ, FUN = "==", "fake_categ")] <- 1 # when is.null(color), a single color for all the dots or lines of data[[i1]] that contain "fake_categ" category
-        total.categ.length <- sum(unlist(length.categ.list), na.rm = TRUE)
-        tempo.color <- fun_gg_palette(total.categ.length)
-        tempo.count <- 0
-        for(i3 in 1:length(data1)){
-            color[[i3]] <- tempo.color[(1:length.categ.list[[i3]]) + tempo.count]
-            tempo.count <- tempo.count + length.categ.list[[i3]]
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i3)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i3)), ":\n", paste(unlist(color), collapse = " "), "\n", paste(names(data1), collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-    }
-    # end vector of color with length as in data1
-    # last check
-    for(i1 in 1:length(data1)){
-        if(categ[[i1]] != "fake_categ" & length(color[[i1]]) != length(unique(data1[[i1]][, categ[[i1]]]))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
-            stop(tempo.cat)
-        }else if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE LENGTH 1 WHEN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IS NULL\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end last check
-    # conversion of geom_hline and geom_vline
-    for(i1 in 1:length(data1)){
-        if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
-            final.data.frame <- data.frame()
-            for(i3 in 1:nrow(data1[[i1]])){
-                tempo.data.frame <- rbind(data1[[i1]][i3, ], data1[[i1]][i3, ])
-                if(geom[[i1]] == "geom_hline"){
-                    tempo.data.frame[, x[[i1]]] <- xlim
-                }else if(geom[[i1]] == "geom_vline"){
-                    tempo.data.frame[, y[[i1]]] <- ylim
-                }else{
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
-                    stop(tempo.cat)
-                }
-                # if(is.null(categ[[i1]])){
-                # data1[, "fake_categ"] <- paste0("Line_", i3)
-                # } #I put that up
-                final.data.frame <- rbind(final.data.frame, tempo.data.frame)
-            }
-            data1[[i1]] <- final.data.frame
-            geom[[i1]] <- "geom_line"
-            if(length(color[[i1]]) == 1){
-                color[[i1]] <- rep(color[[i1]], length(unique(data1[[i1]][ , categ[[i1]]])))
-            }else if(length(color[[i1]]) != length(unique(data1[[i1]][ , categ[[i1]]]))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION TO FIT THE XLIM AND YLIM LIMITS OF THE DATA: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-    }
-    # end conversion of geom_hline and geom_vline
-    # kind of geom_point (vectorial or raster)
-    scatter.kind <- vector("list", length = length(data1)) # list of same length as data1, that will be used to use either ggplot2::geom_point() (vectorial dot layer) or fun_gg_point_rast() (raster dot layer)
-    fix.ratio <- FALSE
-    if(is.null(vectorial.limit)){
-        if(raster == TRUE){
-            scatter.kind[] <- "fun_gg_point_rast" # not important to fill everything: will be only used when geom == "geom_point"
-            fix.ratio <- TRUE
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET TO 1/1 TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else{
-            scatter.kind[] <- "ggplot2::geom_point"
-        }
-    }else{
-        for(i2 in 1:length(data1)){
-            if(geom[[i2]] == "geom_point"){
-                if(nrow(data1[[i2]]) <= vectorial.limit){
-                    scatter.kind[[i2]] <- "ggplot2::geom_point"
-                }else{
-                    scatter.kind[[i2]] <- "fun_gg_point_rast"
-                    fix.ratio <- TRUE
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i2)), " LAYER AS RASTER (NOT VECTORIAL)")
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }
-            }
-        }
-        if(any(unlist(scatter.kind) == "fun_gg_point_rast")){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET TO 1/1 TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-    }
-    # end kind of geom_point (vectorial or raster)
-    tempo.gg.name <- "gg.indiv.plot."
-    tempo.gg.count <- 0
-    # no need loop part
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(xlab)){x[[1]]}else{xlab}))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(ylab)){y[[1]]}else{ylab}))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-    add.check <- TRUE
-    if( ! is.null(add)){ # if add is NULL, then = 0
-        if(grepl(pattern = "ggplot2::theme", add) == TRUE){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER.
-\nIT IS RECOMMENDED TO USE \"+ theme(aspect.ratio = 1)\" IF RASTER MODE IS ACTIVATED")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            add.check <- FALSE
-        }
-    }
-    if(add.check == TRUE & classic == TRUE){
-        # BEWARE: not possible to add several times theme(). NO message but the last one overwrites the others
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
-        if(grid == TRUE){
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-                text = ggplot2::element_text(size = text.size), 
-                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-                line = ggplot2::element_line(size = 0.5), 
-                axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
-                axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
-                panel.grid.major.x = ggplot2::element_line(colour = "grey75"),
-                panel.grid.major.y = ggplot2::element_line(colour = "grey75"),
-                aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
-            ))
-        }else{
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-                text = ggplot2::element_text(size = text.size), 
-                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-                line = ggplot2::element_line(size = 0.5), 
-                axis.line.y.left = ggplot2::element_line(colour = "black"), 
-                axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-                aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
-            ))
-        }
-    }else if(add.check == TRUE & classic == FALSE){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-            text = ggplot2::element_text(size = text.size), 
-            plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-            line = ggplot2::element_line(size = 0.5), 
-            panel.background = ggplot2::element_rect(fill = "grey95"), 
-            axis.line.y.left = ggplot2::element_line(colour = "black"), 
-            axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-            panel.grid.major.x = ggplot2::element_line(colour = "grey75"), 
-            panel.grid.major.y = ggplot2::element_line(colour = "grey75"), 
-            panel.grid.minor.x = ggplot2::element_blank(), 
-            panel.grid.minor.y = ggplot2::element_blank(), 
-            strip.background = ggplot2::element_rect(fill = "white", colour = "black"), 
-            aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
-            # do not work -> legend.position = "none" # to remove the legend completely: https://www.datanovia.com/en/blog/how-to-remove-legend-from-a-ggplot/
-        ))
-    }
-    # end no need loop part
-    # loop part
-    point.count <- 0
-    line.count <- 0
-    lg.order <- vector(mode = "list", length = 6) # order of the legend
-    lg.order <- lapply(lg.order, as.numeric) # order of the legend
-    lg.color <- vector(mode = "list", length = 6) # color of the legend
-    lg.alpha <- vector(mode = "list", length = 6) # order of the legend
-    lg.alpha <- lapply(lg.alpha, as.numeric) # alpha of the legend
-    for(i1 in 1:length(data1)){
-        if(geom[[i1]] == "geom_point"){
-            point.count <- point.count + 1
-            if(point.count == 1){
-                fin.lg.disp[[1]] <- legend.disp[[point.count + line.count]]
-                lg.order[[1]] <- point.count + line.count
-                lg.color[[1]] <- color[[i1]]
-                lg.alpha[[1]] <- alpha[[i1]]
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], fill = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = color[[i1]], guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of fill. order determines the order in the legend
-            }
-            if(point.count == 2){
-                fin.lg.disp[[2]] <- legend.disp[[point.count + line.count]]
-                lg.order[[2]] <- point.count + line.count
-                lg.color[[2]] <- color[[i1]]
-                lg.alpha[[2]] <- alpha[[i1]]
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], shape = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_shape_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(19, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of shape
-            }
-            if(point.count == 3){
-                fin.lg.disp[[3]] <- legend.disp[[point.count + line.count]]
-                lg.order[[3]] <- point.count + line.count
-                lg.color[[3]] <- color[[i1]]
-                lg.alpha[[3]] <- alpha[[i1]]
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], stroke = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "stroke", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(0.5, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of stroke
-            }
-        }else{
-            line.count <- line.count + 1
-            if(line.count == 1){
-                fin.lg.disp[[4]] <- legend.disp[[point.count + line.count]]
-                lg.order[[4]] <- point.count + line.count
-                lg.color[[4]] <- color[[i1]]
-                lg.alpha[[4]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], linetype = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round", alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(1, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
-            }
-            if(line.count == 2){
-                fin.lg.disp[[5]] <- legend.disp[[point.count + line.count]]
-                lg.order[[5]] <- point.count + line.count
-                lg.color[[5]] <- color[[i1]]
-                lg.alpha[[5]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], alpha = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round")) # beware: a single color allowed for color argument outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(alpha[[i1]], length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
-            }
-            if(line.count == 3){
-                fin.lg.disp[[6]] <- legend.disp[[point.count + line.count]]
-                lg.order[[6]] <- point.count + line.count
-                lg.color[[6]] <- color[[i1]]
-                lg.alpha[[6]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
-                class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
-                for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
-                    tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
-                    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], size = categ[[i1]]), color = color[[i1]][i5], alpha = alpha[[i1]], lineend = "round")) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-                }
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "size", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.size, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
-            }
-        }
-    }
-    # end loop part
-    # legend display
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = if(fin.lg.disp[[1]] == TRUE){ggplot2::guide_legend(order = lg.order[[1]], override.aes = list(alpha = lg.alpha[[1]], color = lg.color[[1]]))}else{FALSE}, shape = if(fin.lg.disp[[2]] == TRUE){ggplot2::guide_legend(order = lg.order[[2]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[2]]))}else{FALSE}, stroke = if(fin.lg.disp[[3]] == TRUE){ggplot2::guide_legend(order = lg.order[[3]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[3]]))}else{FALSE}, linetype = if(fin.lg.disp[[4]] == TRUE){ggplot2::guide_legend(order = lg.order[[4]], override.aes = list(alpha = lg.alpha[[4]], color = lg.color[[4]]))}else{FALSE}, alpha = if(fin.lg.disp[[5]] == TRUE){ggplot2::guide_legend(order = lg.order[[5]], override.aes = list(alpha = lg.alpha[[5]], color = lg.color[[5]]))}else{FALSE}, size = if(fin.lg.disp[[6]] == TRUE){ggplot2::guide_legend(order = lg.order[[6]], override.aes = list(alpha = lg.alpha[[6]], color = lg.color[[6]]))}else{FALSE})) # clip = "off" to have secondary ticks outside plot region does not work
-    # end legend display
-    # scale management
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(xlim = xlim, ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
-    # x-axis ticks and inv
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    tempo.scale <- fun_scale(lim = xlim, n = ifelse(is.null(x.tick.nb), length(tempo.coord$x.major_source), x.tick.nb))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_x_continuous(
-        breaks = tempo.scale, 
-        labels = if(xlog == "log10"){scales::trans_format("identity",  scales::math_format(10^.x))}else if(xlog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(xlog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n")) ; stop(tempo.cat)}, 
-        expand = c(0, 0),
-        limits = NA,
-        trans = ifelse(diff(xlim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_x_reverse()
-    ))
-    # end x-axis ticks and inv
-    # y-axis ticks and inv
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    tempo.scale <- fun_scale(lim = ylim, n = ifelse(is.null(y.tick.nb), length(tempo.coord$y.major_source), y.tick.nb))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
-        breaks = tempo.scale, 
-        labels = if(ylog == "log10"){scales::trans_format("identity",  scales::math_format(10^.x))}else if(ylog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(ylog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n")) ; stop(tempo.cat)}, 
-        expand = c(0, 0),
-        limits = NA,
-        trans = ifelse(diff(ylim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse()
-    ))
-    # end y-axis ticks and inv
-    # x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    xlim.order <- order(xlim) # to deal with inverse axis
-    ylim.order <- order(ylim) # to deal with inverse axis
-    # no secondary ticks for log2. Play with xlim
-    if(xlog == "log10"){
-        y.range <- tempo.coord$y.range
-        if(diff(ylim.order) < 0){y.range <- -(y.range)}
-        ini.scipen <- options()$scipen
-        options(scipen = -1000) # force scientific format
-        power10.exp <- as.integer(substring(text = 10^xlim, first = (regexpr(pattern = "\\+|\\-", text = 10^xlim)))) # recover the power of 10. Example recover 08 from 1e+08
-        # print(xlim)
-        mantisse <- as.numeric(substr(x = 10^xlim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^xlim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
-        options(scipen = ini.scipen) # restore the initial scientific penalty
-        # print(power10.exp)
-        tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(xlim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(xlim.order) > 0, 1, -1)))))
-        tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(xlim.order) > 0, FALSE, TRUE))
-        tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^xlim) & tempo.tick.pos <= max(10^xlim)])
-        if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 8\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = tempo.tick.pos, xend = tempo.tick.pos, y = y.range[1], yend = y.range[1] + diff(y.range) / 80))
-    }else if(( ! is.null(x.inter.tick.nb)) & xlog == "no"){
-        if(x.inter.tick.nb > 0){
-            x.ticks.pos <- suppressWarnings(as.numeric(tempo.coord$x.labels)) # too difficult to predict the behavior of tempo.coord$x.major_source depending on xlim neg or not, inv or not. Inv is respected
-            if(any(is.na(x.ticks.pos))){
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 9\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            y.range <- tempo.coord$y.range
-            if(diff(ylim.order) < 0){y.range <- -(y.range)}
-            tick.dist <- mean(diff(x.ticks.pos), na.rm = TRUE)
-            minor.tick.dist <- tick.dist / (x.inter.tick.nb + 1)
-            minor.tick.pos <- seq(x.ticks.pos[1] - tick.dist, x.ticks.pos[length(x.ticks.pos)] + tick.dist, by = minor.tick.dist)
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = minor.tick.pos, xend = minor.tick.pos, y = y.range[1], yend = y.range[1] + diff(y.range) / 80))
-        }
-    }
-    # end x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    # y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    # no secondary ticks for log2. Play with ylim
-    if(ylog == "log10"){
-        x.range <- tempo.coord$x.range
-        if(diff(xlim.order) < 0){x.range <- -(x.range)}
-        ini.scipen <- options()$scipen
-        options(scipen = -1000) # force scientific format
-        power10.exp <- as.integer(substring(text = 10^ylim, first = (regexpr(pattern = "\\+|\\-", text = 10^ylim)))) # recover the power of 10. Example recover 08 from 1e+08
-        mantisse <- as.numeric(substr(x = 10^ylim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^ylim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
-        options(scipen = ini.scipen) # restore the initial scientific penalty
-        tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(ylim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(ylim.order) > 0, 1, -1)))))
-        tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(ylim.order) > 0, FALSE, TRUE))
-        tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^ylim) & tempo.tick.pos <= max(10^ylim)])
-        if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = tempo.tick.pos, yend = tempo.tick.pos, x = x.range[1], xend = x.range[1] + diff(x.range) / 80))
-    }else if(( ! is.null(y.inter.tick.nb)) & ylog == "no"){
-        if(y.inter.tick.nb > 0){
-            y.ticks.pos <- suppressWarnings(as.numeric(tempo.coord$y.labels)) # too difficult to predict the behavior of tempo.coord$y.major_source depending on ylim neg or not, inv or not. Inv is respected
-            if(any(is.na(y.ticks.pos))){
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            x.range <- tempo.coord$x.range
-            if(diff(xlim.order) < 0){x.range <- -(x.range)}
-            tick.dist <- mean(diff(y.ticks.pos), na.rm = TRUE)
-            minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
-            minor.tick.pos <- seq(y.ticks.pos[1] - tick.dist, y.ticks.pos[length(y.ticks.pos)] + tick.dist, by = minor.tick.dist)
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = x.range[1], xend = x.range[1] + diff(x.range) / 80))
-        }
-    }
-    # end y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    # end scale management
-    if(plot == TRUE){
-        suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "),if(is.null(add)){NULL}else{add})))))
-    }else{
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    if(return == TRUE){
-        output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
-        if(is.null(unlist(removed.row.nb))){
-            removed.row.nb <- NULL
-            removed.rows <- NULL
-        }else{
-            for(i3 in 1:length(data1)){
-                if( ! is.null(removed.row.nb[[i3]])){
-                    removed.row.nb[[i3]] <- sort(removed.row.nb[[i3]])
-                    removed.rows[[i3]] <- data1.ini[[i3]][removed.row.nb[[i3]], ]
-                }
-            }
-        }
-        output <- list(data = output$data, removed.row.nb = removed.row.nb, removed.rows = removed.rows, axes = output$layout$panel_params[[1]], warnings = paste0("\n", warning, "\n\n"))
-        return(output)
-    }
+tempo <- fun_check(data = y.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.nb.inter.tick, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = text.angle, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = sec.tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+if( ! is.null(bg.color)){
+tempo <- fun_check(data = bg.color, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if( ! (bg.color %in% colors() | grepl(pattern = "^#", bg.color))){ # check color
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": bg.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(grid.lwd)){
+tempo <- fun_check(data = grid.lwd, class = "vector", mode = "numeric", neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(grid.col)){
+tempo <- fun_check(data = grid.col, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if( ! (grid.col %in% colors() | grepl(pattern = "^#", grid.col))){ # check color
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": grid.col ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = just.label.add, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = par.reset, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(custom.par)){
+tempo <- fun_check(data = custom.par, typeof = "list", length = 1, fun.name = function.name) ; eval(ee)
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+text <- NULL
+par(tcl = -par()$mgp[2] * tick.length)
+if(x.log.scale == TRUE){
+grid.coord.x <- c(10^par("usr")[1], 10^par("usr")[2])
+}else{
+grid.coord.x <- c(par("usr")[1], par("usr")[2])
+}
+if(y.log.scale == TRUE){
+grid.coord.y <- c(10^par("usr")[3], 10^par("usr")[4])
+}else{
+grid.coord.y <- c(par("usr")[3], par("usr")[4])
+}
+if( ! is.null(bg.color)){
+rect(grid.coord.x[1], grid.coord.y[1], grid.coord.x[2], grid.coord.y[2], col = bg.color, border = NA)
+}
+if( ! is.null(grid.lwd)){
+grid(nx = NA, ny = NULL, col = grid.col, lty = 1, lwd = grid.lwd)
+}
+if(x.log.scale == TRUE){
+x.mid.left.dev.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
+x.left.dev.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1]) # in x coordinates
+x.mid.right.dev.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
+x.right.dev.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2])) # in x coordinates
+x.mid.left.fig.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
+x.left.fig.region <- 10^(par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1]) # in x coordinates
+x.mid.right.fig.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
+x.right.fig.region <- 10^(par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2])) # in x coordinates
+x.left.plot.region <- 10^par("usr")[1] # in x coordinates, left of the plot region (according to x scale)
+x.right.plot.region <- 10^par("usr")[2] # in x coordinates, right of the plot region (according to x scale)
+x.mid.plot.region <- 10^((par("usr")[2] + par("usr")[1]) / 2) # in x coordinates, right of the plot region (according to x scale)
+}else{
+x.mid.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
+x.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1]) # in x coordinates
+x.mid.right.dev.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
+x.right.dev.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) + ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * (1 - par("omd")[2])) # in x coordinates
+x.mid.left.fig.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] / 2) # in x coordinates, to position axis labeling at the bottom of the graph (according to x scale)
+x.left.fig.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1]) # in x coordinates
+x.mid.right.fig.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2]) / 2) # in x coordinates, to position axis labeling at the top of the graph (according to x scale)
+x.right.fig.region <- (par("usr")[2] + ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * (1 - par("plt")[2])) # in x coordinates
+x.left.plot.region <- par("usr")[1] # in x coordinates, left of the plot region (according to x scale)
+x.right.plot.region <- par("usr")[2] # in x coordinates, right of the plot region (according to x scale)
+x.mid.plot.region <- (par("usr")[2] + par("usr")[1]) / 2 # in x coordinates, right of the plot region (according to x scale)
+}
+if(y.log.scale == TRUE){
+y.mid.bottom.dev.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (par("omd")[3] / 2)) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
+y.bottom.dev.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * par("omd")[3]) # in y coordinates
+y.mid.top.dev.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
+y.top.dev.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4])) # in y coordinates
+y.mid.bottom.fig.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] / 2) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
+y.bottom.fig.region <- 10^(par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3]) # in y coordinates
+y.mid.top.fig.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
+y.top.fig.region <- 10^(par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4])) # in y coordinates
+y.top.plot.region <- 10^par("usr")[4] # in y coordinates, top of the plot region (according to y scale)
+y.bottom.plot.region <- 10^par("usr")[3] # in y coordinates, bottom of the plot region (according to y scale)
+y.mid.plot.region <- (par("usr")[3] + par("usr")[4]) / 2 # in x coordinates, right of the plot region (according to x scale)
+}else{
+y.mid.bottom.dev.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (par("omd")[3] / 2)) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
+y.bottom.dev.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] - ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * par("omd")[3]) # in y coordinates
+y.mid.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
+y.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4])) # in y coordinates
+y.mid.bottom.fig.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3] / 2) # in y coordinates, to position axis labeling at the bottom of the graph (according to y scale). Ex mid.bottom.space
+y.bottom.fig.region <- (par("usr")[3] - ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * par("plt")[3]) # in y coordinates
+y.mid.top.fig.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) / 2) # in y coordinates, to position axis labeling at the top of the graph (according to y scale). Ex mid.top.space
+y.top.fig.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4])) # in y coordinates
+y.top.plot.region <- par("usr")[4] # in y coordinates, top of the plot region (according to y scale)
+y.bottom.plot.region <- par("usr")[3] # in y coordinates, bottom of the plot region (according to y scale)
+y.mid.plot.region <- ((par("usr")[3] + par("usr")[4]) / 2) # in x coordinates, right of the plot region (according to x scale)
+}
+if(x.side == 1 | x.side == 3){
+par(xpd=FALSE, xaxt="s")
+if(is.null(x.categ) & x.log.scale == TRUE){
+if(any(par()$xaxp[1:2] == 0)){
+if(par()$xaxp[1] == 0){
+par(xaxp = c(10^-30, par()$xaxp[2:3])) # because log10(par()$xaxp[1] == 0) == -Inf
+}
+if(par()$xaxp[2] == 0){
+par(xaxp = c(par()$xaxp[1], 10^-30, par()$xaxp[3])) # because log10(par()$xaxp[2] == 0) == -Inf
+}
+}
+axis(side=x.side, at=c(10^par()$usr[1], 10^par()$usr[2]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
+mtext(side = x.side, text = x.lab, line = x.dist.legend / 0.2, las = 0, cex = x.label.magnific)
+par(tcl = -par()$mgp[2] * sec.tick.length) # length of the secondary ticks are reduced
+suppressWarnings(rug(10^outer(c((log10(par("xaxp")[1]) -1):log10(par("xaxp")[2])), log10(1:10), "+"), ticksize = NA, side = x.side)) # ticksize = NA to allow the use of par()$tcl value
+par(tcl = -par()$mgp[2] * tick.length) # back to main ticks
+axis(side = x.side, at = c(1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10), labels = expression(10^-15, 10^-14, 10^-13, 10^-12, 10^-11, 10^-10, 10^-9, 10^-8, 10^-7, 10^-6, 10^-5, 10^-4, 10^-3, 10^-2, 10^-1, 10^0, 10^1, 10^2, 10^3, 10^4, 10^5, 10^6, 10^7, 10^8, 10^9, 10^10), lwd = 0, lwd.ticks = 1, cex.axis = x.axis.magnific)
+x.text <- 10^par("usr")[2]
+}else if(is.null(x.categ) & x.log.scale == FALSE){
+axis(side=x.side, at=c(par()$usr[1], par()$usr[2]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
+axis(side=x.side, at=round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), cex.axis = x.axis.magnific) # axis(side=x.side, at=round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), labels = format(round(seq(par()$xaxp[1], par()$xaxp[2], length.out=par()$xaxp[3]+1), 2), big.mark=','), cex.axis = x.axis.magnific) # to get the 1000 comma separator
+mtext(side = x.side, text = x.lab, line = x.dist.legend / 0.2, las = 0, cex = x.label.magnific)
+if(x.nb.inter.tick > 0){
+inter.tick.unit <- (par("xaxp")[2] - par("xaxp")[1]) / par("xaxp")[3]
+par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
+suppressWarnings(rug(seq(par("xaxp")[1] - 10 * inter.tick.unit, par("xaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + x.nb.inter.tick)), ticksize = NA, x.side)) # ticksize = NA to allow the use of par()$tcl value
+par(tcl = -par()$mgp[2] * tick.length) # back to main ticks
+}
+x.text <- par("usr")[2]
+}else if(( ! is.null(x.categ)) & x.log.scale == FALSE){
+if(is.null(x.categ.pos)){
+x.categ.pos <- 1:length(x.categ)
+}else if(length(x.categ.pos) != length(x.categ)){
+stop("\n\nPROBLEM: x.categ.pos MUST BE THE SAME LENGTH AS x.categ\n\n")
+}
+par(xpd = TRUE)
+if(x.side == 1){
+segments(x0 = x.left.plot.region, x1 = x.right.plot.region, y0 = y.bottom.plot.region, y1 = y.bottom.plot.region) # draw the line of the axis
+text(x = x.categ.pos, y = y.mid.bottom.fig.region, labels = x.categ, srt = text.angle, cex = x.axis.magnific)
+}else if(x.side == 3){
+segments(x0 = x.left.plot.region, x1 = x.right.plot.region, y0 = y.top.plot.region, y1 = y.top.plot.region) # draw the line of the axis
+text(x = x.categ.pos, y = y.mid.top.fig.region, labels = x.categ, srt = text.angle, cex = x.axis.magnific)
+}else{
+stop("\n\nARGUMENT x.side CAN ONLY BE 1 OR 3\n\n")
+}
+par(xpd = FALSE)
+x.text <- par("usr")[2]
+}else{
+stop("\n\nPROBLEM WITH THE x.side (", x.side ,") OR x.log.scale (", x.log.scale,") ARGUMENTS\n\n")
+}
+}else{
+x.text <- par("usr")[2]
+}
+if(y.side == 2 | y.side == 4){
+par(xpd=FALSE, yaxt="s")
+if(is.null(y.categ) & y.log.scale == TRUE){
+if(any(par()$yaxp[1:2] == 0)){
+if(par()$yaxp[1] == 0){
+par(yaxp = c(10^-30, par()$yaxp[2:3])) # because log10(par()$yaxp[1] == 0) == -Inf
+}
+if(par()$yaxp[2] == 0){
+par(yaxp = c(par()$yaxp[1], 10^-30, par()$yaxp[3])) # because log10(par()$yaxp[2] == 0) == -Inf
+}
+}
+axis(side=y.side, at=c(10^par()$usr[3], 10^par()$usr[4]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
+par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
+suppressWarnings(rug(10^outer(c((log10(par("yaxp")[1])-1):log10(par("yaxp")[2])), log10(1:10), "+"), ticksize = NA, side = y.side)) # ticksize = NA to allow the use of par()$tcl value
+par(tcl = -par()$mgp[2] * tick.length) # back to main tick length
+axis(side = y.side, at = c(1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10), labels = expression(10^-15, 10^-14, 10^-13, 10^-12, 10^-11, 10^-10, 10^-9, 10^-8, 10^-7, 10^-6, 10^-5, 10^-4, 10^-3, 10^-2, 10^-1, 10^0, 10^1, 10^2, 10^3, 10^4, 10^5, 10^6, 10^7, 10^8, 10^9, 10^10), lwd = 0, lwd.ticks = 1, cex.axis = y.axis.magnific)
+y.text <- 10^(par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
+mtext(side = y.side, text = y.lab, line = y.dist.legend / 0.2, las = 0, cex = y.label.magnific)
+}else if(is.null(y.categ) & y.log.scale == FALSE){
+axis(side=y.side, at=c(par()$usr[3], par()$usr[4]), labels=rep("", 2), lwd=1, lwd.ticks=0) # draw the axis line
+axis(side=y.side, at=round(seq(par()$yaxp[1], par()$yaxp[2], length.out=par()$yaxp[3]+1), 2), cex.axis = y.axis.magnific)
+mtext(side = y.side, text = y.lab, line = y.dist.legend / 0.2, las = 0, cex = y.label.magnific)
+if(y.nb.inter.tick > 0){
+inter.tick.unit <- (par("yaxp")[2] - par("yaxp")[1]) / par("yaxp")[3]
+par(tcl = -par()$mgp[2] * sec.tick.length) # length of the ticks are reduced
+suppressWarnings(rug(seq(par("yaxp")[1] - 10 * inter.tick.unit, par("yaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + y.nb.inter.tick)), ticksize = NA, side=y.side)) # ticksize = NA to allow the use of par()$tcl value
+par(tcl = -par()$mgp[2] * tick.length) # back to main tick length
+}
+y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
+}else if(( ! is.null(y.categ)) & y.log.scale == FALSE){
+if(is.null(y.categ.pos)){
+y.categ.pos <- 1:length(y.categ)
+}else if(length(y.categ.pos) != length(y.categ)){
+stop("\n\nPROBLEM: y.categ.pos MUST BE THE SAME LENGTH AS y.categ\n\n")
+}
+axis(side = y.side, at = y.categ.pos, labels = rep("", length(y.categ)), lwd=0, lwd.ticks=1) # draw the line of the axis
+par(xpd = TRUE)
+if(y.side == 2){
+text(x = x.mid.left.fig.region, y = y.categ.pos, labels = y.categ, srt = text.angle, cex = y.axis.magnific)
+}else if(y.side == 4){
+text(x = x.mid.right.fig.region, y = y.categ.pos, labels = y.categ, srt = text.angle, cex = y.axis.magnific)
+}else{
+stop("\n\nARGUMENT y.side CAN ONLY BE 2 OR 4\n\n")
+}
+par(xpd = FALSE)
+y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
+}else{
+stop("\n\nPROBLEM WITH THE y.side (", y.side ,") OR y.log.scale (", y.log.scale,") ARGUMENTS\n\n")
+}
+}else{
+y.text <- (par("usr")[4] + (par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3]) * (1 - par("plt")[4]))
+}
+par(xpd=NA)
+text(x = x.mid.right.fig.region, y = y.text, corner.text, adj=c(1, 1.1), cex = magnific.corner.text) # text at the topright corner. Replace x.right.fig.region by x.text if text at the right edge of the plot region
+if(just.label.add == TRUE & x.side == 0 & x.lab != ""){
+text(x = x.mid.plot.region, y = y.mid.bottom.fig.region, x.lab, adj=c(0.5, 0.5), cex = x.label.magnific) # x label
+}
+if(just.label.add == TRUE & y.side == 0 & y.lab != ""){
+text(x = y.mid.plot.region, y = x.mid.left.fig.region, y.lab, adj=c(0.5, 0.5), cex = y.label.magnific) # x label
+}
+par(xpd=FALSE)
+if(par.reset == TRUE){
+tempo.par <- fun_open(pdf.disp = FALSE, return.output = TRUE)
+invisible(dev.off()) # close the new window
+if( ! is.null(custom.par)){
+if( ! names(custom.par) %in% names(tempo.par$ini.par)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": custom.par ARGUMENT SHOULD HAVE THE NAMES OF THE COMPARTMENT LIST COMING FROM THE par() LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+par(custom.par)
+text <- c(text, "\nGRAPH PARAMETERS SET TO VALUES DEFINED BY custom.par ARGUMENT\n")
+}else{
+par(tempo.par$ini.par)
+text <- c(text, "\nGRAPH PARAMETERS RESET TO par() DEFAULT VALUES\n")
+}
+}
+output <- list(x.mid.left.dev.region = x.mid.left.dev.region, x.left.dev.region = x.left.dev.region, x.mid.right.dev.region = x.mid.right.dev.region, x.right.dev.region = x.right.dev.region, x.mid.left.fig.region = x.mid.left.fig.region, x.left.fig.region = x.left.fig.region, x.mid.right.fig.region = x.mid.right.fig.region, x.right.fig.region = x.right.fig.region, x.left.plot.region = x.left.plot.region, x.right.plot.region = x.right.plot.region, x.mid.plot.region = x.mid.plot.region, y.mid.bottom.dev.region = y.mid.bottom.dev.region, y.bottom.dev.region = y.bottom.dev.region, y.mid.top.dev.region = y.mid.top.dev.region, y.top.dev.region = y.top.dev.region, y.mid.bottom.fig.region = y.mid.bottom.fig.region, y.bottom.fig.region = y.bottom.fig.region, y.mid.top.fig.region = y.mid.top.fig.region, y.top.fig.region = y.top.fig.region, y.top.plot.region = y.top.plot.region, y.bottom.plot.region = y.bottom.plot.region, y.mid.plot.region = y.mid.plot.region, text = text)
+return(output)
 }
 
 
-######## fun_gg_bar_mean() #### ggplot2 mean barplot + overlaid dots if required
-
-
-
+######## fun_close() #### close specific graphic windows
 
 
 # Check OK: clear to go Apollo
-fun_gg_bar_mean <- function(data1, y, categ, categ.class.order = NULL, categ.legend.name = NULL, categ.color = NULL, bar.width = 0.5, error.disp = NULL, error.whisker.width = 0.5,  dot.color = "same", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 0.25, dot.size = 3, dot.border.size = 0.5, dot.alpha = 0.5, ylim = NULL, ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0, y.bottom.extra.margin = 0, stat.disp = NULL, stat.size = 4, stat.dist = 2, xlab = NULL, ylab = NULL, vertical = TRUE, text.size = 12, title = "", title.text.size = 8, text.angle = 0, classic = FALSE, grid = FALSE, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
-    # AIM
-    # ggplot2 vertical barplot representing mean values with the possibility to add error bars and to overlay dots
-    # for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-    # WARNINGS
-    # rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
-    # if ever bars disappear, see the end of https://github.com/tidyverse/ggplot2/issues/2887
-    # to have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1). See categ below
-    # with several single bars (categ argument with only one element), bar.width argument (i.e., width argument of ggplot2::geom_bar()) defines each bar width. The bar.width argument also defines the space between bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each bar)
-    # with several sets of grouped bars (categ argument with two elements), bar.width argument defines each set of grouped bar width. The bar.width argument also defines the space between set of grouped bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped bar)
-    # to manually change the 0 base bar into this code, see https://stackoverflow.com/questions/35324892/ggplot2-setting-geom-bar-baseline-to-1-instead-of-zero
-    # ARGUMENTS
-    # data1: a dataframe containing one column of values (see y argument below) and one or two columns of categories (see categ argument below). Duplicated column names not allowed
-    # y: character string of the data1 column name for y-axis (containing numeric values). Numeric values will be averaged by categ to generate the bars and will also be used to plot the dots
-    # categ: vector of character strings of the data1 column name for categories (column of characters or factor). Must either be one or two column names. If a single column name (further refered to as categ1), then one bar per class of categ1. If two column names (further refered to as categ1 and categ2), then one bar per class of categ2, which form a group of bars in each class of categ1. BEWARE, categ1 (and categ2 if it exists) must have a single value of y per class of categ1 (and categ2). To have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1)
-    # categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the barplot (the first compartment for categ1 and and the second for categ2). If categ.class.order = NULL, classes are represented according to the alphabetical order. Some compartment can be NULL and other not
-    # categ.legend.name: character string of the legend title for categ2. If categ.legend.name = NULL, then categ.legend.name <- categ1 if only categ1 is present and categ.legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required
-    # categ.color: vector of character color string for bar filling. If categ.color = NULL, default colors of ggplot2, whatever categ1 and categ2. If categ.color is non null and only categ1 in categ argument, categ.color can be either: (1) a single color string (all the bars will have this color, whatever the classes of categ1), (2) a vector of string colors, one for each class of categ1 (each color will be associated according to categ.class.order of categ1), (3) a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ1 and a single class of categ1 per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in categ.color. If categ.color is non null and categ1 and categ2 specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for bars inside a group of bars)
-    # bar.width: numeric value (from 0 to 1) of the bar or set of grouped bar width (see warnings above)
-    # error.disp: either "SD", "SD.TOP", "SEM" or "SEM.TOP". If NULL, no error bars added
-    # error.whisker.width: numeric value (from 0 to 1) of the whisker (error bar extremities) width, with 0 meaning no whiskers and 1 meaning a width equal to the corresponding bar width
-    # dot.color: vector of character string. Idem as categ.color but for dots, except that in the possibility (3), the rule "a single color per class of categ1 and a single class of categ1", cannot be respected (each dot can have a different color). If NULL, no dots plotted
-    # dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. If FALSE, dots are randomly spread, using the dot.jitter argument (see below)
-    # dot.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the ylim range. Each dot will then be put in one of the bin, with the size the width of the bin. Not considered if dot.tidy is FALSE
-    # dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion, with 0 meaning no dispersion and 1 meaning a dispersion in the corresponding bar width interval. Not considered if dot.tidy is TRUE
-    # dot.size: numeric value of dot size. Not considered if dot.tidy is TRUE
-    # dot.border.size: numeric value of border dot size. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border. Another one leave the border without size control (geom_doplot() feature)
-    # dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
-    # ylim: 2 numeric values for y-axis range. If NULL, range of y in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the ylim must be already in the corresponding log if ylog argument is not "no" (see below)
-    # ylog: Either "no" (values in the y argument column of the data1 data frame are not log), "log2" (values in the y argument column of the data1 data frame are log2 transformed) or "log10" (values in the y argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-    # y.tick.nb: approximate number of desired label values on the y-axis (n argument of the the fun_scale() function)
-    # y.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if ylog is other than "no". In that case, play with the ylim and y.tick.nb arguments
-    # y.include.zero: logical. Does ylim range include 0? Ok even if ylog = TRUE because ylim must already be log transformed values
-    # y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis
-    # y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
-    # stat.disp: add the mean number above the corresponding bar. Either NULL (no number shown), "top" (at the top of the figure region) or "above" (above each bar)
-    # stat.size: numeric value of the stat size (in points). Increase the value to increase text size
-    # stat.dist: numeric value of the stat distance. Increase the value to increase the distance
-    # xlab: a character string or expression for x-axis legend. If NULL, character string of categ1
-    # ylab: a character string or expression for y-axis legend. If NULL, character string of the y argument
-    # vertical: logical. Vertical bars? BEWARE: will be automatically set to TRUE if ylog argument is other than "no". Indeed, not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-    # text.size: numeric value of the size of the (1) axis numbers and axis legends, (2) texts in the graphic legend, (3) stats above bars (in points)
-    # title: character string of the graph title
-    # title.text.size: numeric value of the title size (in points)
-    # text.angle: integer value of the text angle for the x-axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-    # classic: logical. Use the classic theme (article like)?
-    # grid: logical. draw horizontal lines in the background to better read the bar values? Not considered if classic = FALSE
-    # return: logical. Return the graph parameters?
-    # plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
-    # add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # ggplot2
-    # scales
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_2d_comp()
-    # fun_gg_just()
-    # fun_gg_palette()
-    # fun_name_change()
-    # fun_pack()
-    # fun_check()
-    # fun_round()
-    # fun_scale()
-    # RETURN
-    # a barplot if plot argument is TRUE
-    # a list of the graph info if return argument is TRUE:
-    # $stat: the graphic statistics
-    # $removed.row.nb: which rows have been removed due to NA detection in y and categ columns (NULL if no row removed)
-    # $removed.rows: removed rows containing NA (NULL if no row removed)
-    # $data: the graphic bar and dot coordinates
-    # $axes: the x-axis and y-axis info
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    ### nice representation (1)
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "LEGEND", categ.color = NULL, bar.width = 0.3, error.disp = "SD.TOP", error.whisker.width = 0.8, dot.color = "same", dot.jitter = 0.5, dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 0.5, ylim = c(10, 25), y.include.zero = TRUE, stat.disp = "above", stat.size = 4, xlab = "GROUP", ylab = "MEAN", text.size = 12, title = "GRAPH1", title.text.size = 8, text.angle = 0, classic = TRUE, grid = TRUE)
-    ### nice representation (2)
-    # set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(24, 0), rnorm(24, -10), rnorm(24, 10), rnorm(24, 20)), Group1 = rep(c("CAT", "DOG"), times = 48), Group2 = rep(c("A", "B", "C", "D"), each = 24)) ; set.seed(NULL) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A", "D", "C")), categ.legend.name = "LEGEND", categ.color = NULL, bar.width = 0.8, dot.color = "grey50", dot.tidy = TRUE, dot.bin.nb = 60, dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 0.5, ylim= c(-20, 30), stat.disp = "above", stat.size = 4, stat.dist = 1, xlab = "GROUP", ylab = "MEAN", vertical = FALSE, text.size = 12, title = "GRAPH1", title.text.size = 8, text.angle = 45, classic = FALSE)
-    ### simple example
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1")
-    ### separate bars. Example (1) of modification of bar color using a single value
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = "white")
-    ### separate bars. Example (2) of modification of bar color using one value par class of categ2
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = c("coral", "lightblue"))
-    ### separate bars. Example (3) of modification of bar color using the bar.color data frame column, with respect of the correspondence between categ2 and bar.color columns
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), bar.color = rep(c("coral", "lightblue"), time = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = obs1$bar.color)
-    ### separate bars. Example (1) of modification of dot color, using the same dot color as the corresponding bar
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = "same")
-    ### separate bars. Example (2) of modification of dot color, using a single color for all the dots
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = "green")
-    ### separate bars. Example (3) of modification of dot color, using one value par class of categ2
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = c("green", "brown"))
-    ### separate bars. Example (4) of modification of dot color, using different colors for each dot
-    # obs1 <- data.frame(Time = 1:10, Group1 = rep(c("G", "H"), times = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
-    ### grouped bars. Simple example
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"))
-    ### grouped bars. More grouped bars
-    # obs1 <- data.frame(Time = 1:24, Group1 = rep(c("G", "H"), times = 12), Group2 = rep(c("A", "B", "C", "D"), each = 6)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"))
-    ### grouped bars. Example (1) of modification of bar color, using a single value
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = "white")
-    ### grouped bars. Example (2) of modification of bar color, using one value par class of categ2
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = c("coral", "lightblue"))
-    ### grouped bars. Example (3) of modification of bar color, using one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("coral", "lightblue"), each = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = obs1$bar.color)
-    ### grouped bars. Example (1) of modification of dot color, using the same dot color as the corresponding bar
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same")
-    ### grouped bars. Example (2) of modification of dot color, using a single color for all the dots
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "green")
-    ### grouped bars. Example (3) of modification of dot color, using one value par class of categ2
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = c("green", "brown"))
-    ### grouped bars. Example (4) of modification of dot color, using different colors for each dot
-    # obs1 <- data.frame(Time = 1:10, Group1 = rep(c("G", "H"), times = 5), Group2 = rep(c("A", "B"), each = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
-    ### no dots (y.include.zero set to TRUE to see the lowest bar):
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE)
-    ### bar width. Example (1) with bar.width = 0.25 -> three times more space between single bars than the bar width (y.include.zero set to TRUE to see the lowest bar)
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = NULL, y.include.zero = TRUE, bar.width = 0.25)
-    ### bar width. Example (2) with bar.width = 1, no space between single bars
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = NULL, y.include.zero = TRUE, bar.width = 1)
-    ### bar width. Example (3) with bar.width = 0.25 -> three times more space between sets of grouped bars than the set width
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE, bar.width = 0.25)
-    ### bar width. Example (4) with bar.width = 0 -> no space between sets of grouped bars
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE, bar.width = 1)
-    ### error bars
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD.TOP")
-    ### whisker width. Example (1) with error.whisker.width = 1 -> whiskers have the width of the corresponding bar
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 1)
-    ### whisker width. Example (2) error bars with no whiskers
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 0)
-    ### tidy dot distribution. Example (1)
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.bin.nb = 100)
-    ### tidy dot distribution. Example (2) reducing the dot size with dot.bin.nb
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.bin.nb = 150)
-    ### dot jitter. Example (1)
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = FALSE, dot.jitter = 1, dot.size = 2)
-    ### dot jitter. Example (2) with dot.jitter = 1 -> dispersion around the corresponding bar width
-    # obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 1)
-    ### dot jitter. Example (3) with no dispersion
-    # obs1 <- data.frame(Time = 1:100, Group1 = rep(c("G", "H"), times = 50), Group2 = rep(LETTERS[1:5], each = 20)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 0)
-    ### dot size, dot border size and dot transparency
-    # obs1 <- data.frame(Time = 1:100, Group1 = rep(c("G", "H"), times = 50), Group2 = rep(LETTERS[1:5], each = 20)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 4, dot.border.size = 0, dot.alpha = 0.6)
-    ### y-axis limits. Example (1)
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylim = c(-1, 25))
-    ### y-axis limits. Example (2) showing that order matters in ylim argument
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylim = c(25, -1))
-    ### log scale. Example (1). BEWARE: y column must be log, otherwise incoherent scale (see below warning message with the return argument)
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10")
-    ### log scale. Example (2). BEWARE: values of the ylim must be in the corresponding log
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", ylim = c(1,4))
-    ### tick number. Example (1)
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.tick.nb = 10)
-    ### tick number. Example (2) using a log2 scale
-    # obs1 <- data.frame(Time = log2((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log2", y.tick.nb = 10, ylim = c(1, 16))
-    ### tick number. Example (3) using a log10 scale
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.tick.nb = 10)
-    ### tick number. Example (4) using a log10 scale: the reverse y-axis correctly deal with log10 scale
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.tick.nb = 10, ylim = c(4, 1))
-    ### secondary tick number. Example (1)
-    # obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.inter.tick.nb = 2)
-    ### secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.inter.tick.nb = 2)
-    ### include zero in the y-axis
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.include.zero = TRUE)
-    ### extra margins. To avoid dot cuts
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.25, y.bottom.extra.margin = 0.25)
-    ### mean diplay. Example (1) at the top of the plot region
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.1, stat.disp = "top", stat.size = 4, stat.dist = 2)
-    ### mean diplay. Example (2) above bars
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.1, stat.disp = "above", stat.size = 4, stat.dist = 2)
-    ### bar orientation.  Example (1) without log scale, showing that the other arguments are still operational
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.tick.nb = 10, y.inter.tick.nb = 2, y.include.zero = TRUE, vertical = FALSE)
-    ### bar orientation. Example (2) with log scale. Horizontal orientation is blocked with log2 and log10 scales because of a bug in ggplot2 (https://github.com/tidyverse/ggplot2/issues/881)
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", vertical = FALSE)
-    ### classic representation (use grid = TRUE to display the background lines of the y axis ticks)
-    # obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), classic = TRUE, grid = FALSE)
-    ### graphic info. Example (1)
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), return = TRUE)
-    ### graphic info. Example (2) of assignation and warning message display
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; warn <- fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", return = TRUE) ; cat(warn$warnings)
-    ### add ggplot2 functions
-    # obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), add = "+ggplot2::theme_classic()")
-    ### all the arguments
-    # obs1 <- data.frame(x = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "x", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "", categ.color = c("red", "blue"), bar.width = 0.25, error.disp = "SD", error.whisker.width = 0.8, dot.color = "grey", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 1, dot.size = 4, dot.border.size = 0, dot.alpha = 1, ylim = c(0, 25), ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0, stat.disp = "above", stat.size = 4, stat.dist = 2, xlab = "GROUP", ylab = "MEAN", vertical = FALSE, text.size = 12, title = "", title.text.size = 8, text.angle = 45, classic = TRUE, grid = TRUE, return = TRUE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
-    # DEBUGGING
-    # data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("brown", "orange"), each = 10)) ; data1[2:3, 1] <- NA ; data1[7:8, 2] <- NA ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A")) ; categ.legend.name = NULL ; categ.color = na.omit(data1)$bar.color ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = FALSE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = NULL ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # data1 <-data.frame(a = rep(1:20, 5), group1 = rep(c("G", "H"), times = 50), group2 = rep(LETTERS[1:5], each = 20)) ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A", "E", "D", "C")) ; categ.legend.name = NULL ; categ.color = NULL ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = NULL ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("brown", "orange"), each = 10)) ; data1[2:3, 1] <- NA ; data1[7:8, 2] <- NA ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A")) ; categ.legend.name = NULL ; categ.color = na.omit(data1)$bar.color ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # set.seed(1) ; data1 <- data.frame(a = c(rnorm(25, 0), rnorm(25, -10), rnorm(25, 10), rnorm(25, 20)), group1 = rep(c("G", "H"), times = 50), group2 = rep(c("A", "B", "C", "D"), each = 25)) ; set.seed(NULL) ; y = "Time" ; categ = c("group1", "group2") ; categ.class.order = list(NULL, c("B", "A", "D", "C")) ; categ.legend.name = "LEGEND" ; categ.color = NULL ; bar.width = 0.8 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 60 ; dot.jitter = 0.25 ; dot.size = 3.5 ; dot.border.size = 0 ; dot.alpha = 1 ; ylim= c(-15, 25) ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = "no" ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 2 ; xlab = "GROUP" ; ylab = "MEAN" ; vertical = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = -200 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # set.seed(1) ; data1 <- data.frame(x = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; set.seed(NULL) ; y = "x" ; categ <- c("group1", "group2") ; categ.class.order = list(NULL, c("B", "A", "D", "C", "E")) ; categ.legend.name = "LEGEND" ; categ.color = NULL ; bar.width = 0.8 ; error.disp = "SD" ; error.whisker.width = 1 ; dot.color = NULL ; dot.tidy = FALSE ; dot.bin.nb = 60 ; dot.jitter = 0.25 ; dot.size = 3.5 ; dot.border.size = 0.2 ; dot.alpha = 1 ; ylim= c(1, 4) ; ylog = "log10" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 1 ; xlab = "GROUP" ; ylab = "MEAN" ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = -200 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_2d_comp", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_2d_comp() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_gg_just", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_just() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_gg_palette", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_name_change", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_name_change() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_round", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_round() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_scale", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_scale() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # reserved words to avoid bugs (used in this function)
-    reserved.words <- c("categ.check", "categ.color", "dot.color", "dot.max", "dot.min", "ERROR.INF", "ERROR.SUP", "group", "group.check", "max.dot.error", "MEAN", "min.dot.error", "SD", "SEM", "tempo.categ1", "tempo.categ2", "text.max.pos", "text.min.pos", "x", "x.y", "y", "y.check", "y_from.dot.max", "ymax")
-    # end reserved words to avoid bugs (used in this function)
-    # argument checking (and modification for proper color management)
-    warning <- NULL
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & any(duplicated(names(data1)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "), "\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = y, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (y %in% names(data1))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }else if(tempo$problem == FALSE){
-        tempo <- fun_check(data = data1[, y], data.name = "y COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = categ, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & length(categ) > 2){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT CANNOT HAVE MORE THAN 2 COLUMN NAMES OF data1\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }else if(tempo$problem == FALSE & ! all(categ %in% names(data1))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(categ, collapse = " "), "\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    # reserved word checking
-    if(any(names(data1) %in% reserved.words)){
-        if(any(duplicated(names(data1)))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        tempo.output <- fun_name_change(names(data1), reserved.words)
-        for(i3 in 1:length(tempo.output$ini)){ # a loop to be sure to take the good ones
-            names(data1)[names(data1) == tempo.output$ini[i3]] <- tempo.output$post[i3]
-            if(any(y == tempo.output$ini[i3])){
-                y[y == tempo.output$ini[i3]] <- tempo.output$post[i3]
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN y ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i3], " HAS BEEN REPLACED BY ", tempo.output$post[i3], "\nBECAUSE RISK OF BUG AS SOME NAMES IN y ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-            if(any(categ == tempo.output$ini[i3])){
-                categ[categ == tempo.output$ini[i3]] <- tempo.output$post[i3]
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i3], " HAS BEEN REPLACED BY ", tempo.output$post[i3], "\nBECAUSE RISK OF BUG AS SOME NAMES IN categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-        }
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": REGARDING COLUMN NAMES REPLACEMENT, THE NAMES\n", paste(tempo.output$ini, collapse = " "), "\nHAVE BEEN REPLACED BY\n", paste(tempo.output$post, collapse = " "))
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    # end reserved word checking
-    # na detection and removal (done now to be sure of the correct length of categ)
-    if(any(is.na(data1[, c(y, categ)]))){
-        removed.row.nb <- unlist(lapply(lapply(c(data1[c(y, categ)]), FUN = is.na), FUN = which))
-        removed.rows <- data1[removed.row.nb, ]
-        data1 <- data1[-removed.row.nb, ]
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA DETECTED IN COLUMN ", paste(c(y, categ), collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }else{
-        removed.row.nb <- NULL
-        removed.rows <- NULL
-    }
-    # end na detection and removal (done now to be sure of the correct length of categ)
-    for(i1 in 1:length(categ)){
-        if(any(is.na(data1[, categ[i1]]))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ NUMBER ", i1, " IN data1, THE CATEGORY COLUMN ", categ[i1], " CONTAINS NA")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        tempo1 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        tempo2 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", paste0("categ NUMBER ", i1, " OF data1"), " MUST BE A FACTOR OR CHARACTER VECTOR\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo1$problem == FALSE){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ NUMBER ", i1, " IN data1, THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        data1[, categ[i1]] <- factor(data1[, categ[i1]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-    }
-    if( ! is.null(categ.class.order)){
-        tempo <- fun_check(data = categ.class.order, class = "list", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & length(categ.class.order) > 2){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A LIST OF MAX LENGTH 2\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE){
-            for(i3 in 1:length(categ.class.order)){
-                if(is.null(categ.class.order[[i3]])){
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE categ.class.order COMPARTMENT ", i3, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                    data1[, categ[i3]] <- factor(as.character(data1[, categ[i3]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                }else if(any(duplicated(categ.class.order[[i3]]))){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COMPARTMENT ", i3, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i3]], collapse = " "), "\n\n================\n\n")
-                    cat(tempo.cat)
-                    arg.check <- c(arg.check, TRUE)
-                }else if( ! (all(categ.class.order[[i3]] %in% unique(data1[, categ[i3]])) & all(unique(data1[, categ[i3]]) %in% categ.class.order[[i3]]))){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COMPARTMENT ", i3, " OF categ.class.order ARGUMENT MUST BE CLASSES OF ELEMENT ", i3, " OF categ\nHERE IT IS:\nCOMPARTMENT ", i3, " OF categ.class.order:", paste(categ.class.order[[i3]], collapse = " "), "\nCOLUMN ", categ[i3], " OF data1: ", paste( unique(data1[, categ[i3]]), collapse = " "), "\n\n================\n\n")
-                    cat(tempo.cat)
-                    arg.check <- c(arg.check, TRUE)
-                }else{
-                    data1[, categ[i3]] <- factor(data1[, categ[i3]], levels = categ.class.order[[i3]]) # reorder the factor
-                    
-                }
-            }
-        }
-    }
-    if( ! is.null(categ.legend.name)){
-        tempo <- fun_check(data = categ.legend.name, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-    }else{
-        categ.legend.name <- categ[length(categ)] # if only categ1, then legend name of categ1, if length(categ) == 2, then legend name of categ2
-    }
-    if( ! is.null(categ.color)){
-        # check the nature of color
-        tempo1 <- fun_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        tempo2 <- fun_check(data = categ.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-            # integer colors into gg_palette
-            tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem
-            if(tempo.check.color == TRUE){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else{ # convert integers into colors
-                categ.color <- fun_gg_palette(max(categ.color, na.rm = TRUE))
-            }
-            # end integer colors into gg_palette
-        }
-        if( ! (all(categ.color %in% colors() | grepl(pattern = "^#", categ.color)))){ # check that all strings of low.color start by #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(categ.color), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        if(any(is.na(categ.color))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT CONTAINS NA")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        # end check the nature of color
-        # check the length of color
-        # No problem of NA management by ggplot2 because already removed
-        i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
-        if(length(categ.color) == length(unique(data1[, categ[i0]]))){ # here length(categ.color) is equal to the different number of categ
-            data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-            data1 <- data.frame(data1, categ.color = data1[, categ[i0]])
-            levels(data1$categ.color) <- categ.color
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", categ[i0], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(categ.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else if(length(categ.color) == length(data1[, categ[i0]])){# here length(categ.color) is equal to nrow(data1) -> Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[i0]])))
-            data1 <- data.frame(data1, categ.color = categ.color)
-            tempo.check <- unique(data1[ , c(categ[i0], "categ.color")])
-            if( ! (nrow(tempo.check) == length(unique(categ.color)) & nrow(tempo.check) == length(unique(data1[ , categ[i0]])))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], ":\n", paste(unique(mapply(FUN = "paste", data1[ ,categ[i0]], data1[ ,"categ.color"])), collapse = "\n"), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else{
-                data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-                categ.color <- unique(categ.color[order(data1[, categ[i0]])]) # Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[i0]])))
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], " AS:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\n", paste(categ.color, collapse = " "))
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-        }else if(length(categ.color) == 1){
-            data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-            data1 <- data.frame(data1, categ.color = categ.color)
-            categ.color <- rep(categ.color, length(levels(data1[, categ[i0]])))
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[i0], "\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(categ.color, collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else{
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[i0], " COLUMN. HERE IT IS COLOR LENGTH ", length(categ.color), " VERSUS CATEG LENGTH ", length(data1[, categ[i0]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[i0]])), "\nPRESENCE OF NA COULD BE THE PROBLEM\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }else{
-        i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
-        data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-        categ.color <- fun_gg_palette(length(levels(data1[, categ[i0]])))
-        data1 <- data.frame(data1, categ.color = data1[, categ[i0]])
-        levels(data1$categ.color) <- categ.color
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL categ.color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", categ[i0], " IN data1:\n", paste(categ.color, collapse = " "), "\n", paste(levels(data1[, categ[i0]]), collapse = " "))
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    tempo <- fun_check(data = bar.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(error.disp)){
-        tempo <- fun_check(data = error.disp, options = c("SD", "SD.TOP", "SEM", "SEM.TOP"), length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = error.whisker.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(dot.color)){
-        # check the nature of color
-        tempo1 <- fun_check(data = dot.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        tempo2 <- fun_check(data = dot.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
-        if(tempo1$problem == TRUE & tempo2$problem == TRUE){
-            # integer colors into gg_palette
-            tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem
-            if(tempo.check.color == TRUE){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else{ # convert integers into colors
-                dot.color <- fun_gg_palette(max(dot.color, na.rm = TRUE))
-            }
-            # end integer colors into gg_palette
-        }
-        if(all(dot.color == "same") & length(dot.color) == 1){
-            dot.color <- categ.color # same color of the dots as the corresponding bar color
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT HAS BEEN SET TO \"SAME\"\nTHUS, DOT COLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], " AS:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\n", paste(levels(factor(dot.color)), collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else if( ! (all(dot.color %in% colors() | grepl(pattern = "^#", dot.color)))){ # check that all strings of low.color start by #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR VECTOR STARTING BY #, OR (2) COLOR NAMES GIVEN BY colors(), OR (3) INTEGERS, OR THE STRING\"same\"\nHERE IT IS: ", paste(unique(dot.color), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-        if(any(is.na(dot.color))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT CONTAINS NA")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        # end check the nature of color
-        # check the length of color
-        # No problem of NA management by ggplot2 because already removed
-        i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
-        if(length(dot.color) == length(unique(data1[, categ[i0]]))){ # here length(dot.color) is equal to the different number of categ
-            data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-            data1 <- data.frame(data1, dot.color = data1[, categ[i0]])
-            levels(data1$dot.color) <- dot.color
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", categ[i0], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else if(length(dot.color) == length(data1[, categ[i0]])){# here length(dot.color) is equal to nrow(data1) -> Modif to have length(dot.color) equal to the different number of categ (length(dot.color) == length(levels(data1[, categ[i0]])))
-            data1 <- data.frame(data1, dot.color = dot.color)
-        }else if(length(dot.color) == 1 & ! all(dot.color == "same")){
-            data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
-            data1 <- data.frame(data1, dot.color = dot.color)
-            dot.color <- rep(dot.color, length(levels(data1[, categ[i0]])))
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[i0], "\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(dot.color, collapse = " "))
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else{
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[i0], " COLUMN. HERE IT IS COLOR LENGTH ", length(dot.color), " VERSUS CATEG LENGTH ", length(data1[, categ[i0]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[i0]])), "\nPRESENCE OF NA COULD BE THE PROBLEM\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = dot.tidy, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dot.bin.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dot.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(ylim)){
-        tempo <- fun_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & any(ylim %in% c(Inf, -Inf))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
-            
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = ylog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ylog != "no"){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, ".\nVALUES FROM THE y ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(ylog), " TRANSFORMED, AS THE ylog ARGUMENT JUST MODIFIES THE AXIS SCALE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        if( ! is.null(ylim)){
-            if(any(ylim <= 0)){
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF ylog ARGUMENT IS SET TO ", ylog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }else if(any( ! is.finite(if(ylog == "log10"){10^ylim}else{2^ylim}))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT RETURNS INF WITH THE ylog ARGUMENT SET TO ", ylog, "\nAS SCALE COMPUTATION IS ", ifelse(ylog == "log10", 10, 2), "^ylim:\n", paste(ifelse(ylog == "log10", 10, 2)^ylim, collapse = " "), "\nARE YOU SURE THAT ylim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(ylim, collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-        }
-    }
-    if( ! is.null(y.tick.nb)){
-        tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & y.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(y.inter.tick.nb)){
-        tempo <- fun_check(data = y.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & y.inter.tick.nb < 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    # inactivated because xlim and ylim already log transformed
-    # if(tempo$problem == FALSE & ylog != "no" & y.include.zero == TRUE){
-    # tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE NO 0 ALLOWED IN LOG SCALE")
-    # warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    # }
-    tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(stat.disp)){
-        tempo <- fun_check(data = stat.disp, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = stat.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = stat.dist, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(xlab)){
-        if(all(class(xlab) %in% "expression")){ # to deal with math symbols
-            tempo <- fun_check(data = xlab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-        }else{
-            tempo <- fun_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-    }
-    if( ! is.null(ylab)){
-        if(all(class(ylab) %in% "expression")){ # to deal with math symbols
-            tempo <- fun_check(data = ylab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
-        }else{
-            tempo <- fun_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        }
-    }
-    tempo <- fun_check(data = vertical, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ylog != "no" & vertical == FALSE){
-        vertical <- TRUE
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": BECAUSE OF A BUG IN ggplot2, CANNOT FLIP BARS HORIZONTALLY WITH A YLOG SCALE -> vertical ARGUMENT RESET TO TRUE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(add)){
-        tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string  finished by )
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking (and modification for proper color management)
-    # package checking
-    fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-    fun_pack(req.package = c("scales"), path.lib = path.lib)
-    # end package checking
-    # main code
-    if(length(categ) == 1){
-        # new data frames for bar and error bars
-        mean.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <-categ[1] ; x.env}, FUN = mean, na.rm = TRUE)
-        sd.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <-categ[1] ; x.env}, FUN = sd, na.rm = TRUE)
-        nb.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <- categ[1] ; x.env}, FUN = function(x.env2){length(x.env2[ ! is.na(x.env2)])})
-        if( ! all(identical(mean.dataframe[, categ[1]], sd.dataframe[, categ[1]]) & identical(mean.dataframe[, categ[1]], nb.dataframe[, categ[1]]))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": aggregate OUTPUT IS DIFFERENT IN TERM OF CLASS ORDER FOR mean.dataframe, sd.dataframe AND nb.dataframe. CODE HAS TO BE MODIFIED\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            sem.dataframe <- sd.dataframe
-            sem.dataframe[, y] <- sd.dataframe[, y] / (nb.dataframe[, y])^0.5
-        }
-        # end new data frames for bar and error bars
-        # data1 check categ order for dots coordinates recovery
-        data1 <- data.frame(data1, categ.check = data1[, categ[1]])
-        data1$categ.check <- as.integer(data1$categ.check) # to check that data1[, categ[1]] and dot.coord$group are similar, during merging
-        # end data1 check categ order for dots coordinates recovery
-        # per bar dots coordinates recovery
-        tempo.gg.name <- "gg.indiv.plot."
-        tempo.gg.count <- 0
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[1]))) # fill because this is what is used with geom_bar
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(stroke = dot.border.size, size = dot.size, alpha = dot.alpha, pch = 21))
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot()) # to easily have the equivalent of the grouped bars
-        dot.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]]
-        if( ! is.null(dot.color)){
-            dot.coord <- data.frame(dot.coord[order(dot.coord$group, dot.coord$y), ], y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], dot.color = data1[order(data1$categ.check, data1[, y]), "dot.color"], tempo.categ1 = data1[order(data1$categ.check, data1[, y]), categ[1]]) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
-            names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
-            if( ! identical(dot.coord$y, dot.coord$y.check)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": (dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-        # end per bar dots coordinates recovery
-    }else if(length(categ) == 2){
-        # new data frames for bar and error bars
-        mean.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = mean, na.rm = TRUE)
-        sd.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = sd, na.rm = TRUE)
-        nb.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = function(x.env2){length(x.env2[ ! is.na(x.env2)])})
-        tempo.check.mean <- mapply(FUN = "paste", mean.dataframe[, categ[1]], mean.dataframe[, categ[2]], sep = "_")
-        tempo.check.sd <- mapply(FUN = "paste", sd.dataframe[, categ[1]], sd.dataframe[, categ[2]], sep = "_")
-        tempo.check.nb <- mapply(FUN = "paste", nb.dataframe[, categ[1]], nb.dataframe[, categ[2]], sep = "_")
-        if( ! all(identical(tempo.check.mean, tempo.check.sd) & identical(tempo.check.mean, tempo.check.nb))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": aggregate OUTPUT IS DIFFERENT IN TERM OF CLASS ORDER FOR mean.dataframe, sd.dataframe AND nb.dataframe. CODE HAS TO BE MODIFIED\n\n================\n\n")
-            stop(tempo.cat)
-        }else{
-            sem.dataframe <- sd.dataframe
-            sem.dataframe[, y] <- sd.dataframe[, y] / (nb.dataframe[, y])^0.5
-        }
-        # end new data frames for bar and error bars
-        # data1 check categ order for dots coordinates recovery
-        tempo.factor <- paste0(data1[order(data1[, categ[2]], data1[, categ[1]]), categ[2]], "_", data1[order(data1[, categ[2]], data1[, categ[1]]), categ[1]])
-        data1 <- data.frame(data1[order(data1[, categ[2]], data1[, categ[1]]), ], categ.check = factor(tempo.factor, levels = unique(tempo.factor)))
-        data1$categ.check <- as.integer(data1$categ.check)
-        # end data1 check categ order for dots coordinates recovery
-        # per bar dots coordinates recovery
-        tempo.gg.name <- "gg.indiv.plot."
-        tempo.gg.count <- 0
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[2]))) # fill because this is what is used with geom_bar
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(stroke = dot.border.size, size = dot.size, alpha = dot.alpha, pch = 21))
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot()) # to easily have the equivalent of the grouped bars
-        dot.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]]
-        if( ! is.null(dot.color)){
-            dot.coord <- data.frame(dot.coord[order(dot.coord$group, dot.coord$y), ], y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], dot.color = data1[order(data1$categ.check, data1[, y]), "dot.color"], tempo.categ1 = data1[order(data1$categ.check, data1[, y]), categ[1]], tempo.categ2 = data1[order(data1$categ.check, data1[, y]), categ[2]]) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
-            names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
-            names(dot.coord)[names(dot.coord) == "tempo.categ2"] <- categ[2]
-            if( ! (identical(dot.coord$y, dot.coord$y.check) & identical(dot.coord$group, dot.coord$categ.check))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": (dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-        }
-    }else{
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    data2 <- mean.dataframe
-    if( ! is.null(error.disp)){
-        if(error.disp == "SD"){
-            data2 <- data.frame(data2, SD = sd.dataframe[, y], ERROR.INF = mean.dataframe[, y] - sd.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sd.dataframe[, y])
-        }else if(error.disp == "SD.TOP"){
-            data2 <- data.frame(data2, SD = sd.dataframe[, y], ERROR.INF = mean.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sd.dataframe[, y])
-        }else if(error.disp == "SEM"){
-            data2 <- data.frame(data2, SEM = sem.dataframe[, y], ERROR.INF = mean.dataframe[, y] - sem.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sem.dataframe[, y])
-        }else if(error.disp == "SEM.TOP"){
-            data2 <- data.frame(data2, SEM = sem.dataframe[, y], ERROR.INF = mean.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sem.dataframe[, y])
-        }else{
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-    }
-    # stat output
-    stat <- data2
-    names(stat)[names(stat) == y] <- "MEAN"
-    # end stat output
-    # range depending on means and error bars
-    if(is.null(ylim)){
-        if(is.null(dot.color)){ # no dots plotted
-            if( ! is.null(error.disp)){
-                if(any(c(data2[, "ERROR.INF"], data2[, "ERROR.SUP"]) %in% c(Inf, -Inf))){
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE ERROR.INF OR ERROR.SUP COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }
-                ylim <- range(c(data2[, "ERROR.INF"], data2[, "ERROR.SUP"]), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-            }else{
-                if(any(data2[, y] %in% c(Inf, -Inf))){
-                    tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }
-                ylim <- range(data2[, y], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-            }
-        }else{
-            if(any(data1[, y] %in% c(Inf, -Inf))){
-                tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-                warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            }
-            ylim <- range(data1[, y], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-        }
-    }
-    if(suppressWarnings(all(ylim %in% c(Inf, -Inf)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED YLIM CONTAINS Inf VALUES, BECAUSE VALUES FROM data2 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end range depending on means and error bars
-    ylim.order <- order(ylim) # to deal with inverse axis
-    ylim <- sort(ylim)
-    ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(ylim.order) > 0 means not inversed axis
-    ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(ylim.order) > 0 means not inversed axis
-    if(y.include.zero == TRUE){ # no need to check ylog != "no" because done before
-        ylim <- range(c(ylim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    }
-    ylim <- ylim[ylim.order]
-    if(any(is.na(ylim))){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    # width commputations
-    if(length(categ) == 2){
-        bar.width2 <- bar.width / length(unique(data1[, categ[length(categ)]])) # real width of each bar in x-axis unit, among the set of grouped bar. Not relevant if no grouped bars length(categ) == 1
-    }else if(length(categ) == 1){
-        bar.width2 <- bar.width
-    }else{
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    error.whisker.width <- bar.width * error.whisker.width # real error bar width
-    dot.jitter <- bar.width2 * dot.jitter # real dot.jitter
-    # end width commputations
-    # barplot
-    # constant part
-    tempo.gg.name <- "gg.indiv.plot."
-    tempo.gg.count <- 0
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(xlab)){categ[1]}else{xlab}))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(ylab)){y}else{ylab}))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-    # text angle management
-    tempo.just <- fun_gg_just(angle = text.angle, axis = ifelse(vertical == TRUE, "x", "y"))
-    # end text angle management
-    add.check <- TRUE
-    if( ! is.null(add)){ # if add is NULL, then = 0
-        if(grepl(pattern = "ggplot2::theme", add) == TRUE){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            add.check <- FALSE
-        }
-    }
-    if(add.check == TRUE & classic == TRUE){
-        # BEWARE: not possible to add several times theme(). NO message but the last one overwrites the others
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
-        if(grid == TRUE){
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-                text = ggplot2::element_text(size = text.size), 
-                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-                line = ggplot2::element_line(size = 0.5), 
-                axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
-                axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
-                panel.grid.major.x = if(vertical == TRUE){NULL}else{ggplot2::element_line(colour = "grey75")},
-                panel.grid.major.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey75")}else{NULL},
-                axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
-                axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
-            ))
-        }else{
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-                text = ggplot2::element_text(size = text.size), 
-                plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-                line = ggplot2::element_line(size = 0.5), 
-                axis.line.y.left = ggplot2::element_line(colour = "black"), 
-                axis.line.x.bottom = ggplot2::element_line(colour = "black"),
-                axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
-                axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
-            ))
-        }
-    }else if(add.check == TRUE & classic == FALSE){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-            text = ggplot2::element_text(size = text.size), 
-            plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-            line = ggplot2::element_line(size = 0.5), 
-            panel.background = ggplot2::element_rect(fill = "grey95"), 
-            axis.line.y.left = ggplot2::element_line(colour = "black"), 
-            axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
-            panel.grid.major.x = ggplot2::element_line(colour = "grey75"), 
-            panel.grid.major.y = ggplot2::element_line(colour = "grey75"), 
-            panel.grid.minor.x = ggplot2::element_blank(), 
-            panel.grid.minor.y = ggplot2::element_blank(), 
-            strip.background = ggplot2::element_rect(fill = "white", colour = "black"),
-            axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
-            axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
-        ))
-    }
-    # end constant part
-    # barplot and error bars
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_bar(data = data2, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[length(categ)]), stat = "identity", position = ggplot2::position_dodge(width = NULL), color = "black", width = bar.width)) # stat = "identity" because already counted, position = position_dodge(width = NULL) for grouped bars (width = NULL means no overlap between grouped bars). Please, see explanation in https://stackoverflow.com/questions/34889766/what-is-the-width-argument-in-position-dodge/35102486#35102486
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = categ.legend.name, values = as.character(categ.color), guide = ggplot2::guide_legend(override.aes = list(fill = categ.color)))) # values are the values of color (which is the border color in geom_bar. BEWARE: values = categ.color takes the numbers to make the colors if categ.color is a factor
-    if( ! is.null(error.disp)){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_errorbar(data = data2, mapping = ggplot2::aes_string(x = categ[1], group = categ[length(categ)], ymin = "ERROR.INF", ymax = "ERROR.SUP"), position = ggplot2::position_dodge(width = bar.width), color = "black", width = error.whisker.width)) # cannot use fill = categ[length(categ)] because not an aesthetic of geom_errorbar, but if only x = categ[1], wrong x coordinates with grouped bars
-    }
-    # end barplot and error bars
-    # coordinates management (for random plotting and for stat display)
-    # bars
-    bar.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]] # to have the summary statistics of the plot. Here because can be required for stat.disp when just bar are plotted
-    # end bars
-    if( ! is.null(dot.color)){
-        # random dots
-        if(dot.tidy == FALSE){
-            dot.coord.rd1 <- merge(dot.coord, bar.coord[c("fill", "group", "x")], by = intersect("group", "group"), sort = FALSE) # rd for random. Send the coord of the bars into the coord data.frame of the dots (in the column x.y). BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
-            if(nrow(dot.coord.rd1) != nrow(dot.coord)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd1 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            set.seed(1)
-            sampled.dot.jitter <- if(nrow(dot.coord.rd1) == 1){runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2)}else{sample(x = runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2), size = nrow(dot.coord.rd1), replace = FALSE)}
-            dot.coord.rd2 <- data.frame(dot.coord.rd1, dot.x = dot.coord.rd1$x.y + sampled.dot.jitter) # set the dot.jitter thanks to runif and dot.jitter range. Then, send the coord of the bars into the coord data.frame of the dots (in the column x.y)
-            set.seed(NULL)
-            if(length(categ) == 1){
-                tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                verif <- paste0(categ[1], ".check")
-            }else if(length(categ) == 2){
-                tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
-                verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            dot.coord.rd3 <- merge(dot.coord.rd2, tempo.data1, by = "group", sort = FALSE) # send the factors of data1 into coord
-            if(nrow(dot.coord.rd3) != nrow(dot.coord) | ( ! fun_2d_comp(dot.coord.rd3[categ], dot.coord.rd3[verif])$identical.content)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            # end random dots
-        }
-        # tidy dots
-        # coordinates are recover during plotting (see dot.coord.tidy1 below)
-        # end tidy dots
-    }
-    # end coordinates management (for random plotting and for stat display)
-    # dot display
-    if( ! is.null(dot.color)){
-        if(dot.tidy == FALSE){
-            if(dot.border.size == 0){
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = dot.coord.rd3, mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), size = dot.size, color = dot.coord.rd3$dot.color, alpha = dot.alpha, pch = 16)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-            }else{
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = dot.coord.rd3, mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), stroke = dot.border.size, size = dot.size, fill = dot.coord.rd3$dot.color, alpha = dot.alpha, pch = 21)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
-            }
-        }else if(dot.tidy == TRUE){
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(data = dot.coord, mapping = ggplot2::aes_string(x = categ[1], y = "y", color = categ[length(categ)]), position = ggplot2::position_dodge(width = bar.width), binaxis = "y", stackdir = "center", alpha = dot.alpha, fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"], show.legend = FALSE, binwidth = (ylim[2] - ylim[1]) / dot.bin.nb)) # very weird behavior of geom_dotplot, because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have  to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = categ.legend.name, values = if(dot.border.size == 0){as.character(levels(dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"]))}else{rep("black", length(categ.color))})) # values = rep("black", length(categ.color)) are the values of color (which is the border color of dots), and this modify the border color on the plot. BEWARE: values = categ.color takes the numbers to make the colors if categ.color is a factor. BEWARE: , guide = ggplot2::guide_legend(override.aes = list(fill = levels(dot.color))) here
-            # coordinates of tidy dots
-            tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data # to have the tidy dot coordinates
-            if(length(which(sapply(tempo.coord, FUN = nrow) == nrow(data1))) > 1){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MORE THAN 2 COMPARTMENT WITH NROW EQUAL TO nrow(data1) IN THE tempo.coord LIST (FOR TIDY DOT COORDINATES). CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }else{
-                dot.coord.tidy1 <- tempo.coord[[which(sapply(tempo.coord, FUN = nrow) == nrow(data1))]]
-            }
-            tempo.bar.coord <- merge(bar.coord, unique(dot.coord[, c("group", categ)]), by = intersect("group", "group"), sort = FALSE) # add the categ in bar.coord. BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
-            if(nrow(tempo.bar.coord) != nrow(bar.coord)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT tempo.bar.coord DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            dot.coord.tidy2 <- merge(dot.coord.tidy1, tempo.bar.coord[c("fill", "group", "x", categ)], by = intersect("group", "group"), sort = FALSE) # send the coord of the bars into the coord data.frame of the dots (in the column x.y). BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
-            if(nrow(dot.coord.tidy2) != nrow(dot.coord)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy2 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            if(length(categ) == 1){
-                tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                verif <- paste0(categ[1], ".check")
-            }else if(length(categ) == 2){
-                tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
-                verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            dot.coord.tidy3 <- merge(dot.coord.tidy2, tempo.data1, by = "group", sort = FALSE) # send the factors of data1 into coord
-            if(nrow(dot.coord.tidy3) != nrow(dot.coord) | ( ! fun_2d_comp(dot.coord.tidy3[categ], dot.coord.tidy3[verif])$identical.content)){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                stop(tempo.cat)
-            }
-            # end coordinates of tidy dots
-        }
-    }
-    # end dot display
-    # stat display
-    # layer after dots but ok, behind dots on the plot
-    if( ! is.null(stat.disp)){
-        if(stat.disp == "top"){
-            assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1),  ggplot2::annotate(geom = "text", x = bar.coord$x, y = ylim[2], label = fun_round(bar.coord$y, 2), size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 1.1), vjust = ifelse(vertical == TRUE, 1.1, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order. For justification, see https://stackoverflow.com/questions/7263849/what-do-hjust-and-vjust-do-when-making-a-plot-using-ggplot
-        }else if(stat.disp == "above"){
-            # stat coordinates
-            if( ! is.null(dot.color)){ # for text just above max dot
-                if(dot.tidy == FALSE){
-                    tempo.stat.ini <- dot.coord.rd3
-                }else if(dot.tidy == TRUE){
-                    tempo.stat.ini <- dot.coord.tidy3
-                }
-                stat.coord1 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "x.y", categ[1], categ[2])} ; x.env}, FUN = min, na.rm = TRUE)
-                names(stat.coord1)[names(stat.coord1) == "y"] <- "dot.min"
-                stat.coord2 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "x.y", categ[1], categ[2])} ; x.env}, FUN = max, na.rm = TRUE)
-                names(stat.coord2) <- paste0(names(stat.coord2), "_from.dot.max")
-                names(stat.coord2)[names(stat.coord2) == "y_from.dot.max"] <- "dot.max"
-                stat.coord3 <- cbind(bar.coord[order(bar.coord$x), ], stat.coord1[order(stat.coord1$x.y), ], stat.coord2[order(stat.coord2$x.y), ]) # should be ok to use bar.coord$x and stat.coord$x.y to assemble the two data frames because x coordinates of the bars. Thus, we cannot have identical values
-                if( ! all(identical(round(stat.coord3$x, 9), round(stat.coord3$x.y, 9)))){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": FUSION OF bar.coord, stat.coord1 AND stat.coord2 ACCORDING TO bar.coord$x, stat.coord1$x.y AND stat.coord2$x.y IS NOT CORRECT. CODE HAS TO BE MODIFIED\n\n================\n\n")
-                    stop(tempo.cat)
-                }
-                dot.text.coord <- stat.coord3[, c("x", "group", "dot.min", "dot.max")]
-                names(dot.text.coord)[names(dot.text.coord) == "dot.min"] <- "text.min.pos"
-                names(dot.text.coord)[names(dot.text.coord) == "dot.max"] <- "text.max.pos"
-            }
-            if( ! is.null(error.disp)){ # for text just above error bars
-                if(length(categ) == 1){
-                    tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                    if( ! identical(stat[order(stat[, categ[1]]), categ[1]], tempo.data1[order(tempo.data1[, categ[1]]), categ[1]])){
-                        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat AND tempo.data1\n\n============\n\n"))
-                        stop(tempo.cat)
-                    }else{
-                        names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                        names(tempo.data1)[names(tempo.data1) == "group"] <- "group.check"
-                        stat.coord4 <- cbind(stat[order(stat[, categ[1]]), ], tempo.data1[order(tempo.data1[, paste0(categ[1], ".check")]), ])
-                    }
-                }else if(length(categ) == 2){
-                    tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
-                    if( ! fun_2d_comp(stat[order(stat[, categ[1]], stat[, categ[2]]), c(categ[1], categ[2])], tempo.data1[order(tempo.data1[, categ[1]], tempo.data1[, categ[2]]), c(categ[1], categ[2])])$identical.content){
-                        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat AND tempo.data1\n\n============\n\n"))
-                        stop(tempo.cat)
-                    }else{
-                        names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
-                        names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
-                        names(tempo.data1)[names(tempo.data1) == "group"] <- "group.check"
-                        stat.coord4 <- cbind(stat[order(stat[, categ[1]], stat[, categ[2]]), ], tempo.data1[order(tempo.data1[, paste0(categ[1], ".check")], tempo.data1[,paste0(categ[2], ".check")]), ])
-                    }
-                }else{
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 8\n\n============\n\n"))
-                    stop(tempo.cat)
-                }
-                if( ! identical(bar.coord$group[order(bar.coord$group)], stat.coord4$group.check[order(stat.coord4$group.check)])){
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE bar.coord AND stat.coord4\n\n============\n\n"))
-                    stop(tempo.cat)
-                }else{
-                    stat.coord5 <- cbind(bar.coord[order(bar.coord$group), ], stat.coord4[order(stat.coord4$group.check), ])
-                    error.text.coord <- stat.coord5[, c("x", "group", "ERROR.INF", "ERROR.SUP")] # 
-                    names(error.text.coord)[names(error.text.coord) == "ERROR.INF"] <- "text.min.pos"
-                    names(error.text.coord)[names(error.text.coord) == "ERROR.SUP"] <- "text.max.pos"
-                }
-            }
-            if(( ! is.null(dot.color)) & ! is.null(error.disp)){ # for text above max dot or error bar
-                stat.coord3 <- stat.coord3[order(stat.coord3$x), ]
-                stat.coord5 <- stat.coord5[order(stat.coord5$x), ]
-                if( ! identical(stat.coord3$group, stat.coord5$group)){
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat.coord3 AND stat.coord5\n\n============\n\n"))
-                    stop(tempo.cat)
-                }else{
-                    stat.coord6 <- data.frame(stat.coord3, min.dot.error =  mapply(FUN = min, stat.coord3$dot.min, stat.coord5$ERROR.INF, na.rm = TRUE))
-                    stat.coord7 <- data.frame(stat.coord6, max.dot.error =  mapply(FUN = max, stat.coord3$dot.max, stat.coord5$ERROR.SUP, na.rm = TRUE))
-                    both.text.coord <- stat.coord7[, c("x", "group", "min.dot.error", "max.dot.error")] # 
-                    names(both.text.coord)[names(both.text.coord) == "min.dot.error"] <- "text.min.pos"
-                    names(both.text.coord)[names(both.text.coord) == "max.dot.error"] <- "text.max.pos"
-                }
-            }
-            if(( ! is.null(dot.color)) & is.null(error.disp)){
-                text.coord <- dot.text.coord
-            }else if(is.null(dot.color) & ! is.null(error.disp)){
-                text.coord <- error.text.coord
-            }else if(( ! is.null(dot.color)) & ! is.null(error.disp)){
-                text.coord <- both.text.coord
-            }
-            if( ! (is.null(dot.color) & is.null(error.disp))){
-                bar.coord <- bar.coord[order(bar.coord$x), ]
-                text.coord <- text.coord[order(text.coord$x), ] # to be sure to have the two objects in the same order for x. BEWARE: cannot add identical(as.integer(text.coord$group), as.integer(bar.coord$group)) because with error, the correspondence between x and group is not the same
-                if( ! identical(text.coord$x, bar.coord$x)){
-                    tempo.cat <- (paste0("\n\n============\n\nERROR: text.coord AND bar.coord DO NOT HAVE THE SAME x COLUMN CONTENT\n\n============\n\n"))
-                    stop(tempo.cat)
-                }
-            }
-            # end stat coordinates
-            # stat display
-            if(is.null(dot.color) & is.null(error.disp)){ # text just above bars
-                # performed twice: first for y values >=0, then y values < 0, because only a single value allowed for hjust anf vjust
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = bar.coord$x[bar.coord$y >= 0], y = bar.coord$y[bar.coord$y >= 0], label = fun_round(bar.coord$y, 2)[bar.coord$y >= 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 - stat.dist), vjust = ifelse(vertical == TRUE, 0.5 - stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = bar.coord$x[bar.coord$y < 0], y = bar.coord$y[bar.coord$y < 0], label = fun_round(bar.coord$y, 2)[bar.coord$y < 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
-            }else{ # text just above error bars or dots
-                # I checked that text.coord and bar.coord have the same x and group column content. Thus, ok to use them together
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = text.coord$x[bar.coord$y >= 0], y = text.coord$text.max.pos[bar.coord$y >= 0], label = fun_round(bar.coord$y, 2)[bar.coord$y >= 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 - stat.dist), vjust = ifelse(vertical == TRUE, 0.5 - stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = text.coord$x[bar.coord$y < 0], y = text.coord$text.min.pos[bar.coord$y < 0], label = fun_round(bar.coord$y, 2)[bar.coord$y < 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
-            }
-            # end stat display
-        }else{
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 9\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-    }
-    # end stat display
-    # y scale management (cannot be before dot plot management)
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    tempo.scale <- fun_scale(lim = ylim, n = ifelse(is.null(y.tick.nb), length(tempo.coord$y.major_source), y.tick.nb))
-    # for the ggplot2 bug with ylog, this does not work: eval(parse(text = ifelse(vertical == FALSE & ylog == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_y_continuous")))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
-        breaks = tempo.scale, 
-        labels = if(ylog == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(ylog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(ylog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n")) ; stop(tempo.cat)}, 
-        expand = c(0, 0),
-        limits = NA,
-        trans = ifelse(diff(ylim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse()
-    ))
-    if(vertical == TRUE){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
-    }else{
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_flip(ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
-    }
-    # secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
-    # no secondary ticks for log2. Play with ylim
-    if(ylog == "log10"){
-        ylim.order <- order(ylim) # to deal with inverse axis
-        ini.scipen <- options()$scipen
-        options(scipen = -1000) # force scientific format
-        power10.exp <- as.integer(substring(text = 10^ylim, first = (regexpr(pattern = "\\+|\\-", text = 10^ylim)))) # recover the power of 10. Example recover 08 from 1e+08
-        mantisse <- as.numeric(substr(x = 10^ylim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^ylim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
-        options(scipen = ini.scipen) # restore the initial scientific penalty
-        tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(ylim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(ylim.order) > 0, 1, -1)))))
-        tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(ylim.order) > 0, FALSE, TRUE))
-        tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^ylim) & tempo.tick.pos <= max(10^ylim)])
-        if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        # if(vertical == TRUE){ # do not remove in case the bug is fixed
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = tempo.tick.pos, yend = tempo.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
-        # }else{ # not working because  of the ggplot2 bug
-        # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = tempo.tick.pos, xend = tempo.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
-        # }
-    }else if(( ! is.null(y.inter.tick.nb)) & ylog == "no"){
-        if(y.inter.tick.nb > 0){
-            if(vertical == TRUE){
-                ticks.pos <- suppressWarnings(as.numeric(tempo.coord$y.labels)) # too difficult to predict the behavior of tempo.coord$x.major_source depending on ylim neg or not, inv or not
-                if(any(is.na(ticks.pos))){
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 12\n\n============\n\n"))
-                    stop(tempo.cat)
-                }
-                tick.dist <- mean(diff(ticks.pos), na.rm = TRUE)
-                minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
-                minor.tick.pos <- seq(ticks.pos[1] - tick.dist, ticks.pos[length(ticks.pos)] + tick.dist, by = minor.tick.dist)
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
-            }else{
-                ticks.pos  <- suppressWarnings(as.numeric(tempo.coord$x.labels))# too difficult to predict the behavior of tempo.coord$x.major_source depending on ylim neg or not, inv or not
-                if(any(is.na(ticks.pos))){
-                    tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 13\n\n============\n\n"))
-                    stop(tempo.cat)
-                }
-                tick.dist <- mean(diff(ticks.pos), na.rm = TRUE)
-                minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
-                minor.tick.pos <- seq(ticks.pos[1] - tick.dist, ticks.pos[length(ticks.pos)] + tick.dist, by = minor.tick.dist)
-                assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = tempo.coord$y.range[1], xend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
-            }
-        }
-    }
-    # end secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
-    # end y scale  management (cannot be before dot plot management)
-    if(plot == TRUE){
-        suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add})))))
-    }else{
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    # end barplot
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    if(return == TRUE){
-        output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
-        output <- list(stat = stat, removed.row.nb = removed.row.nb, removed.rows = removed.rows, data = output$data, axes = output$layout$panel_params[[1]], warnings = paste0("\n", warning, "\n\n"))
-        return(output)
-    }
+fun_close <- function(kind = "pdf", return.text = FALSE){
+# AIM
+# close only specific graphic windows (devices)
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS:
+# kind: vector, among c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff"), indicating the kind of graphic windows (devices) to close. BEWARE: either "windows", "quartz", "x11" or "X11" means that all the X11 GUI graphics devices will be closed, whatever the OS used
+# return.text: print text regarding the kind parameter and the devices that were finally closed?
+# RETURN
+# text regarding the kind parameter and the devices that were finally closed
+# EXAMPLES
+# windows() ; windows() ; pdf() ; dev.list() ; fun_close(kind = c("pdf", "x11"), return.text = TRUE) ; dev.list()
+# DEBUGGING
+# kind = c("windows", "pdf") ; return.text = FALSE # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = kind, options = c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff"), fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = return.text, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+text <- paste0("THE REQUIRED KIND OF GRAPHIC DEVICES TO CLOSE ARE ", paste(kind, collapse = " "))
+if(Sys.info()["sysname"] == "Windows"){ # Note that .Platform$OS.type() only says "unix" for macOS and Linux and "Windows" for Windows
+if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
+tempo <- kind %in% c("windows", "quartz", "x11", "X11")
+kind[tempo] <- "windows" # term are replaced by what is displayed when using a <- dev.list() ; names(a)
+}
+}else if(Sys.info()["sysname"] == "Linux"){
+if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
+tempo.device <- suppressWarnings(try(X11(), silent = TRUE))[] # open a X11 window to try to recover the X11 system used
+if( ! is.null(tempo.device)){
+text <- paste0(text, "\nCANNOT CLOSE GUI GRAPHIC DEVICES AS REQUIRED BECAUSE THIS LINUX SYSTEM DOES NOT HAVE IT")
+}else{
+tempo <- kind %in% c("windows", "quartz", "x11", "X11")
+kind[tempo] <- names(dev.list()[length(dev.list())]) # term are replaced by what is displayed when using a <- dev.list() ; names(a)
+invisible(dev.off()) # close the X11 opened by tempo
+}
+}
+}else{ # for macOS
+if(any(kind %in% c("windows", "quartz", "x11", "X11"))){
+tempo <- kind %in% c("windows", "quartz", "x11", "X11")
+kind[tempo] <- "quartz" # term are replaced by what is displayed when using a <- dev.list() ; names(a)
+}
+}
+kind <- unique(kind)
+if(length(dev.list()) != 0){
+for(i in length(names(dev.list())):1){
+if(names(dev.list())[i] %in% kind){
+text <- paste0(text, "\n", names(dev.list())[i], " DEVICE NUMBER ", dev.list()[i], " HAS BEEN CLOSED")
+invisible(dev.off(dev.list()[i]))
+}
+}
+}
+if(return.text == TRUE){
+return(text)
+}
 }
 
 
-######## fun_gg_boxplot() #### ggplot2 boxplot + background dots if required
-
-
-
-
-
-
-
-######## fun_gg_bar_prop() #### ggplot2 proportion barplot
-
-
-######## fun_gg_strip() #### ggplot2 stripchart + mean/median
-
-
-######## fun_gg_violin() #### ggplot2 violins
-
-
-######## fun_gg_line() #### ggplot2 lines + background dots and error bars
-
-
-# DO NOT ERASE. COMPARE WITH BAR MEAN BEFORE AND RECOVER WHAT HAS BEEN MODIFIED
+################ Standard graphics
 
-fun_gg_line <- function(data1, y, categ, categ.class.order = NULL, categ.legend.name = NULL, categ.color = NULL, line.size = 1, error.disp = NULL, error.whisker.width = 0.5,  dot.color = "same", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 0.25, dot.size = 3, dot.border.size = 0.5, dot.alpha = 0.5, ylim = NULL, ylog = FALSE, y.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0, stat.disp = NULL, stat.size = 4, stat.dist = 2, xlab = NULL, ylab = NULL, vertical = TRUE, title = "", text.size = 12, text.angle = 0, classic = FALSE, grid = FALSE, return = FALSE, path.lib = NULL){
-    # AIM
-    # ggplot2 vertical barplot representing mean values with the possibility to add error bars and to overlay dots
-    # for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-    # WARNINGS
-    # rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
-    # if ever bars disappear, see the end of https://github.com/tidyverse/ggplot2/issues/2887
-    # to have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1). See categ below
-    # with several single bars (categ argument with only one element), bar.width argument (i.e., width argument of ggplot2::geom_bar()) defines each bar width. The bar.width argument also defines the space between bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each bar)
-    # with several sets of grouped bars (categ argument with two elements), bar.width argument defines each set of grouped bar width. The bar.width argument also defines the space between set of grouped bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped bar)
-    # to manually change the 0 base bar into this code, see https://stackoverflow.com/questions/35324892/ggplot2-setting-geom-bar-baseline-to-1-instead-of-zero
-    # ARGUMENTS
-    # data1: a dataframe containing one column of values (see y argument below) and one or two columns of categories (see categ argument below). Duplicated column names not allowed
-    # y: character string of the data1 column name for y-axis (containing numeric values). Numeric values will be averaged by categ to generate the bars and will also be used to plot the dots
-    # categ: vector of character strings of the data1 column name for categories (column of characters or factor). Must either be one or two column names. If a single column name (further refered to as categ1), then one bar per class of categ1. If two column names (further refered to as categ1 and categ2), then one bar per class of categ2, which form a group of bars in each class of categ1. BEWARE, categ1 (and categ2 if it exists) must have a single value of y per class of categ1 (and categ2). To have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1)
-    # categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the barplot (the first compartment for categ1 and and the second for categ2). If categ.class.order = NULL, classes are represented according to the alphabetical order. Some compartment can be NULL and other not
-    # categ.legend.name: character string of the legend title for categ2. If categ.legend.name = NULL, then categ.legend.name <- categ1 if only categ1 is present and categ.legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required
-    # categ.color: vector of character color string for bar filling. If categ.color = NULL, default colors of ggplot2, whatever categ1 and categ2. If categ.color is non null and only categ1 in categ argument, categ.color can be either: (1) a single color string (all the bars will have this color, whatever the classes of categ1), (2) a vector of string colors, one for each class of categ1 (each color will be associated according to categ.class.order of categ1), (3) a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ1 and a single class of categ1 per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in categ.color. If categ.color is non null and categ1 and categ2 specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for bars inside a group of bars)
-    # bar.width: numeric value (from 0 to 1) of the bar or set of grouped bar width (see warnings above)
-    # error.disp: either "SD", "SD.TOP", "SEM" or "SEM.TOP". If NULL, no error bars added
-    # error.whisker.width: numeric value (from 0 to 1) of the whisker (error bar extremities) width, with 0 meaning no whiskers and 1 meaning a width equal to the corresponding bar width
-    # dot.color: vector of character string. Idem as categ.color but for dots, except that in the possibility (3), the rule "a single color per class of categ1 and a single class of categ1", cannot be respected (each dot can have a different color). If NULL, no dots plotted
-    # dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. If FALSE, dots are randomly spread, using the dot.jitter argument (see below)
-    # dot.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the ylim range. Each dot will then be put in one of the bin, with the size the width of the bin. Not considered if dot.tidy is FALSE
-    # dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion, with 0 meaning no dispersion and 1 meaning a dispersion in the corresponding bar width interval. Not considered if dot.tidy is TRUE
-    # dot.size: numeric value of dot size. Not considered if dot.tidy is TRUE
-    # dot.border.size: numeric value of border dot size. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border. Another one leave the border without size control (geom_doplot() feature)
-    # dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
-    # ylim: 2 numeric values for y-axis range. If NULL, range of y in data1
-    # ylog: logical. Log scale for the y-axis?  BEWARE: do not tranform the data, but just display ticks in a log scale manner. BEWARE: if TRUE, ylim must not contain null or negative values. In addition, will be automatically set to FALSE if vertical argument is set to FALSE, to prevent a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
-    # y.tick.nb: number of desired values on the y-axis
-    # y.include.zero: logical. Does ylim range include 0? BEWARE: if ylog = TRUE, will be automately set to FALSE with a warning message
-    # y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis. BEWARE with ylog = TRUE, the range result must not overlap zero or negative values
-    # y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
-    # stat.disp: add the mean number above the corresponding bar. Either NULL (no number shown), "top" (at the top of the figure region) or "above" (above each bar)
-    # stat.size: numeric value of the stat size (in points). Increase the value to increase text size
-    # stat.dist: numeric value of the stat distance. Increase the value to increase the distance
-    # xlab: a character string for x-axis legend. If NULL, character string of categ1
-    # ylab: a character string y-axis legend. If NULL, character string of the y argument
-    # vertical: logical. Vertical bars? BEWARE: cannot have horizontal bars with a log axis, i.e., ylog = TRUE & vertical = FALSE (see ylog above)
-    # title: character string of the graph title
-    # text.size: numeric value of the text size (in points)
-    # text.angle: integer value of the text angle for the x-axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
-    # classic: logical. Use the classic theme (article like)?
-    # grid: logical. draw horizontal lines in the background to better read the bar values? Not considered if classic = FALSE
-    # return: logical. Return the graph parameters?
-    # path.lib: absolute path of the required packages, if not in the default folders
-}
 
+######## fun_empty_graph() #### text to display for empty graphs
 
-######## fun_gg_heatmap() #### ggplot2 heatmap + overlaid mask if required
 
+ 
 
-#test plot.margin = margin(up.space.mds, right.space.mds, down.space.mds, left.space.mds, "inches") to set the dim of the region plot ?
-# if matrix is full of zero (or same value I guess), heatmap is complicate. Test it and error message
 
 # Check OK: clear to go Apollo
-fun_gg_heatmap <- function(data1, legend.name1 = "", low.color1 = "blue", mid.color1 = "white", high.color1 = "red", limit1 = NULL, midpoint1 = NULL, data2 = NULL, color2 = "black", alpha2 = 0.5, invert2 = FALSE, text.size = 12, title = "", title.text.size = 12, show.scale = TRUE, rotate = FALSE, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
-    # AIM
-    # ggplot2 heatmap with the possibility to overlay a mask
-    # see also:
-    # draw : http://www.sthda.com/english/wiki/ggplot2-quick-correlation-matrix-heatmap-r-software-and-data-visualization
-    # same range scale : https://stackoverflow.com/questions/44655723/r-ggplot2-heatmap-fixed-scale-color-between-graphs 
-    # for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
-    # ARGUMENTS
-    # data1: numeric matrix or data frame resulting from the conversion of the numeric matrix by reshape2::melt()
-    # legend.name1: character string of the data1 heatmap scale legend
-    # low.color1: character string of the color (i.e., "blue" or "#0000FF") of the lowest scale value
-    # mid.color1: same as low.color1 but for the middle scale value. If NULL, the middle color is the default color between low.color1 and high.color1. BEWARE: argument midpoint1 is not ignored, even if mid.color1 is NULL, meaning that the default mid color can still be controled
-    # high.color1: same as low.color1 but for the highest scale value
-    # limit1: 2 numeric values defining the lowest and higest color scale values. If NULL, take the range of data1 values
-    # midpoint1: single numeric value defining the value corresponding to the mid.color1 argument. A warning message is returned if midpoint1 does not correspond to the mean of limit1 values, because the color scale is not linear anymore. If NULL, takes the mean of limit1 values. Mean of data1, instead of mean of limit1, can be used here if required
-    # data2: binary mask matrix (made of 0 and 1) of same dimension as data1 or a data frame resulting from the conversion of the binary mask matrix by reshape2::melt(). Value 1 of data2 will correspond to color2 argument (value 0 will be NA color), and the opposite if invert2 argument is TRUE (inverted mask)
-    # color2: color of the 1 values of the binary mask matrix. The 0 values will be color NA
-    # alpha2: numeric value (from 0 to 1) of the mask transparency
-    # invert2: logical. Invert the mask (1 -> 0 and 0 -> 1)?
-    # text.size: numeric value of the size of the texts in scale
-    # title: character string of the graph title
-    # title.text.size: numeric value of the title size (in points)
-    # show.scale: logical. Show color scale?
-    # rotate: logical. Rotate the heatmap 90° clockwise?
-    # return: logical. Return the graph parameters?
-    # plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
-    # add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # ggplot2
-    # reshape2
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_pack()
-    # fun_round()
-    # RETURN
-    # a heatmap if plot argument is TRUE
-    # a list of the graph info if return argument is TRUE:
-    # $data: a list of the graphic info
-    # $axes: a list of the axes info
-    # $scale: the scale info (lowest, mid and highest values)
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    # fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), title = "GRAPH 1")
-    # fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), return = TRUE)
-    # fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), legend.name1 = "VALUE", title = "GRAPH 1", text.size = 5, data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4), invert2 = FALSE, return = TRUE)
-    # diagonal matrix
-    # fun_gg_heatmap(data1 = matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), ncol = 4))
-    # fun_gg_heatmap(data1 = reshape2::melt(matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), ncol = 4)))
-    # error message
-    # fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), data2 = matrix(rep(c(1,0,0,0), 5), ncol = 5))
-    # fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), data2 = reshape2::melt(matrix(rep(c(1,0,0,0), 4), ncol = 4)))
-    # fun_gg_heatmap(data1 = reshape2::melt(matrix(1:16, ncol = 4)), data2 = reshape2::melt(matrix(rep(c(1,0,0,0), 4), ncol = 4)))
-    #### NICE REPRESENTATION
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = expression(paste("TIME (", 10^-20, " s)")), ylog = "log10", y.tick.nb = 5, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, classic = TRUE)
-    #### SINGLE GEOMETRIC LAYER
-    # simple example (1) of scatter plot using the classical writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time")
-    # simple example (2) of scatter plot, identical to (1) but using the list writting. Here, a list of one compartment, systematically named L1, is provided to the data1, x, y, categ, geom and alpha. Contrary to example (1), the geom and alpha argument have to be included because the default value are not lists (if data1 is a list, all the x, y, categ, legend.name, color, geom and alpha must also be list if non NULL)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
-    # color of dots. Example (1) using the classical writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", color = "blue")
-    # color of dots. Example (2) using the list writting
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), color = list(L1 = "blue"), geom = list(L1 = "geom_point"), alpha = list(L1 = 1))
-    # From here, classical writting is use for single element in data1 and list writting otherwise
-    # color of dots. Example (3) when dots are in different categories. Note that categ argument controls the legend display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group")
-    # color of dots. Example (4) when dots are in different categories. A single color mentionned is applied to all the dots
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = "coral")
-    # color of dots. Example (5) when dots are in different categories. Numbers can be used if ggplot colors are desired
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = 2)
-    # color of dots. Example (6) when dots are in different categories, with one color per category (try also color = 2:1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = c("coral", "green"))
-    # color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B"), col = rep(c("coral", "green"), each = 3)) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = obs1$col)
-    # color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way (ggplot colors)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = as.numeric(obs1$group))
-    # legend name
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", legend.name = "CLASSES")
-    # different geom features. Example (1) with geom_line kind of lines
-    # obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_line", categ = "group")
-    # different geom features. Example (2) with geom_path kind of lines (see the difference with (1))
-    # obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_path", categ = "group")
-    # different geom features. Example (3) with geom_hline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
-    # obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = NULL, y = "km", geom = "geom_hline", categ = "group", xlim = c(1,10))
-    # different geom features. Example (4) with geom_vline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
-    # obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = NULL, geom = "geom_vline", categ = "group", ylim = c(1,10))
-    #### MULTI GEOMETRIC LAYERS
-    # Note that in subsequent examples, names of list compartments are systematically referred to as L1, L2, etc., to show the correspondence between the arguments data1, x, y, categ, etc.
-    # single layer (as examples above)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
-    # simple example of two layers
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    # color of dots. Example (1)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    # color of dots. Example (2) of the legend display. The categ argument must be supplied. Make a fake categorical colum in the data frame if necessary (as in this example). The categ argument triggers the legend display. The legend.name argument is used to remove the legend title of each layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = "GROUP1") ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = "GROUP2") ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = NULL, L2 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    # color of dots. Example (3) when dots are in different categories (default colors)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    # color of dots. Example (3) when dots are in different categories. A single color mentionned per layer is applied to all the dots of the layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
-    # color of dots. Example (5) when dots are in different categories, with one color per category in each layer
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = c("coral", "blue"), L2 = c("green", "black")))
-    # color of dots. Example (4) when dots are in different categories. Numbers can be used if ggplot colors are desired
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = 1:2, L2 = c(4, 7)))
-    # color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers). BEWARE: in color argument, if the column of the data frame does not exist, color can be still displayed (L2 = obs2$notgood is equivalent to L2 = NULL). Such situation is reported in the warning messages (see below)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = obs1$col1, L2 = obs2$col2))
-    # color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way is not recommended with mutiple layers
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = as.numeric(obs1$group1), L2 = as.numeric(obs2$group2)))
-    # legend name
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = "CLASS A", L2 = "CLASS G"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
-    # different geom features. Example (1) with 5 layers. Note that order in data1 defines the overlay order (from below to above) and the order in the legend (from top to bottom)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; obs3 <- data.frame(time = c(29, 31), group3 = c("HORIZ.THRESHOLD.1", "HORIZ.THRESHOLD.2")) ; obs4 <- data.frame(km = 26, group4 = "VERTIC.THRESHOLD") ; obs5 <- data.frame(km = seq(1, 100, 0.1), time = 7*seq(1, 100, 0.1)^0.5, group5 = "FUNCTION") ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2, L3 = obs3, L4 = obs4, L5 = obs5), x = list(L1 = "km", L2 = "km", L3 = NULL, L4 = "km", L5 = "km"), y = list(L1 = "time", L2 = "time", L3 = "time", L4 = NULL, L5 = "time"), categ = list(L1 = "group1", L2 = "group2", L3 = "group3", L4 = "group4", L5 = "group5"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline", L4 = "geom_vline", L5 = "geom_line"), alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5, L4 = 0.5, L5 = 0.5), xlim = c(10, 40), ylim = c(10, 40), classic = TRUE, line.size = 0.75)
-    # layer transparency. One transparency defined by layer (from 0 invisible to 1 opaque). Note that for lines, transparency in not applied in the legend to prevent a ggplot2 bug (https://github.com/tidyverse/ggplot2/issues/2452)
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 1, L2 = 0.1))
-    # other different example of mutiple geom features are shown in the fun_segmentation function
-    #### OTHER GRAPHIC ARGUMENTS
-    # dot size (line.size argument controls size of lines)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", dot.size = 5)
-    # axis management: examples are shown for x-axis but are identical for y-axis
-    # x-axis limits. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(-1, 25))
-    # x-axis limits. Example (2) showing that order matters in ylim argument
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(25, -1))
-    # log scale. Example (1). BEWARE: x column must be log, otherwise incoherent scale (see below warning message with the return argument)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10")
-    # log scale. Example (2). BEWARE: values of the xlim must be in the corresponding log
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(1, 10))
-    # tick number. Example (1). Note that the final number shown is approximate
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.tick.nb = 6)
-    # tick number. Example (2) using a log2 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log2", x.tick.nb = 6)
-    # tick number. Example (3) using a log10 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.tick.nb = 6)
-    # tick number. Example (4) using a log10 scale: the reverse x-axis correctly deal with log10 scale
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(7, 2))
-    # secondary tick number. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.inter.tick.nb = 4)
-    # secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.inter.tick.nb = 4)
-    # extra margins. To avoid dot cuts
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.left.extra.margin = 0.25, x.right.extra.margin = 0.25)
-    # include zero in both the x-axis and y-xis
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xy.include.zero = TRUE)
-    # graph title, text size and legend display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", text.size = 8, title = "GRAPH1", title.text.size = 16, show.legend = TRUE)
-    # raster display. This switchs from vectorial mode to raster mode. The display can takes some time, but this is easier to export and handle than vectorial display
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(100000, 22, 3), time = rnorm(100000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", raster = TRUE)
-    # classic representation (use grid = TRUE to display the background lines of the y axis ticks)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", classic = TRUE, grid = FALSE)
-    # graphic info. Example (1)
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", return = TRUE)
-    # graphic info. Example (2) of assignation and warning message display
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; output <- fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", return = TRUE) ; cat(output$warnings)
-    # add ggplot2 functions
-    # obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", add = "+ggplot2::theme_classic()")
-    # all the arguments
-    # set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = "TIME (s)", ylog = "log10", y.tick.nb = 5, y.inter.tick.nb = NULL, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, text.size = 12, title = "", title.text.size = 8, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
-    
-    
-    
-    
-    
-    # DEBUGGING
-    # data1 = matrix(1:16, ncol = 4) ; legend.name1 = "" ; low.color1 = "blue" ; mid.color1 = "white" ; high.color1 = "red" ; limit1 = NULL ; midpoint1 = NULL ; data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4) ; color2 = "black" ; alpha2 = 0.5 ; invert2 = FALSE ; text.size = 12 ; title = "" ; title.text.size = 12 ; show.scale = TRUE ; rotate = FALSE ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_round", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_round() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # no reserved words required for this function
-    # argument checking
-    warning <- NULL
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    if(all(is.matrix(data1))){
-        tempo <- fun_check(data = data1, class = "matrix", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }else if(all(is.data.frame(data1))){
-        tempo <- fun_check(data = data1, class = "data.frame", length = 3, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE){
-            # structure of reshape2::melt() data frame
-            tempo <- fun_check(data = data1[, 1], typeof = "integer", fun.name = function.name)
-            tempo <- fun_check(data = data1[, 2], typeof = "integer", fun.name = function.name)
-            tempo <- fun_check(data = data1[, 3], mode = "numeric", na.contain = TRUE, fun.name = function.name)
-        }
-    }else{
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A NUMERIC MATRIX OR A DATA FRAME OUTPUT OF THE reshape::melt() FUNCTION\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = legend.name1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = low.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (all(low.color1 %in% colors() | grepl(pattern = "^#", low.color1)))){ # check that all strings of low.color1 start by #
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": low.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! is.null(mid.color1)){
-        tempo <- fun_check(data = mid.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! (all(mid.color1 %in% colors() | grepl(pattern = "^#", mid.color1)))){ # check that all strings of mid.color1 start by #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mid.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = high.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (all(high.color1 %in% colors() | grepl(pattern = "^#", high.color1)))){ # check that all strings of high.color1 start by #
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": high.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! is.null(limit1)){
-        tempo <- fun_check(data = limit1, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & any(limit1 %in% c(Inf, -Inf))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": limit1 ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(midpoint1)){
-        tempo <- fun_check(data = midpoint1, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    if( ! is.null(data2)){
-        if(all(is.matrix(data2))){
-            tempo <- fun_check(data = data2, class = "matrix", mode = "numeric", fun.name = function.name) ; eval(ee)
-            if(tempo$problem == FALSE & ! all(unique(data2) %in% c(0,1))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX IN data2 MUST BE MADE OF 0 AND 1 ONLY (MASK MATRIX)\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & all(is.matrix(data1)) & ! identical(dim(data1), dim(data2))){ # matrix and matrix
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX DIMENSION IN data2 MUST BE IDENTICAL AS MATRIX DIMENSION IN data1. HERE IT IS RESPECTIVELY:\n", paste(dim(data2), collapse = " "), "\n", paste(dim(data1), collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & all(is.data.frame(data1)) & nrow(data1) != prod(dim(data2))){ # reshape2 and matrix
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME IN data2 MUST HAVE ROW NUMBER EQUAL TO PRODUCT OF DIMENSIONS OF data1 MATRIX. HERE IT IS RESPECTIVELY:\n", paste(nrow(data1), collapse = " "), "\n", paste(prod(dim(data2)), collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-        }else if(all(is.data.frame(data2))){
-            tempo <- fun_check(data = data2, class = "data.frame", length = 3, fun.name = function.name) ; eval(ee)
-            if(tempo$problem == FALSE){
-                # structure of reshape2::melt() data frame
-                tempo <- fun_check(data = data2[, 1], typeof = "integer", fun.name = function.name)
-                tempo <- fun_check(data = data2[, 2], typeof = "integer", fun.name = function.name)
-                tempo <- fun_check(data = data2[, 3], mode = "numeric", fun.name = function.name)
-            }
-            if(tempo$problem == FALSE & ! all(unique(data2[, 3]) %in% c(0,1))){
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIRD COLUMN OF DATA FRAME IN data2 MUST BE MADE OF 0 AND 1 ONLY (MASK DATA FRAME)\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & all(is.data.frame(data1)) & ! identical(dim(data1), dim(data2))){ # data frame and data frame
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME DIMENSION IN data2 MUST BE IDENTICAL TO DATA FRAME DIMENSION IN data1. HERE IT IS RESPECTIVELY:\n", paste(dim(data2), collapse = " "), "\n", paste(dim(data1), collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & all(is.matrix(data1)) & nrow(data2) != prod(dim(data1))){ # reshape2 and matrix
-                tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME IN data2 MUST HAVE ROW NUMBER EQUAL TO PRODUCT OF DIMENSION OF data1 MATRIX. HERE IT IS RESPECTIVELY:\n", paste(nrow(data2), collapse = " "), "\n", paste(prod(dim(data1)), collapse = " "), "\n\n================\n\n")
-                cat(tempo.cat)
-                arg.check <- c(arg.check, TRUE)
-            }
-        }else{
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A NUMERIC MATRIX OR A DATA FRAME OUTPUT OF THE reshape::melt() FUNCTION\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = color2, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (all(color2 %in% colors() | grepl(pattern = "^#", color2)))){ # check that all strings of color2 start by #
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color2 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = alpha2, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = invert2, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = show.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(add)){
-        tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string  finished by )
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = c("reshape2", "ggplot2"), path.lib = path.lib)
-    # end package checking
-    # main code
-    if(all(is.matrix(data1))){
-        data1 <- reshape2::melt(data1) # transform a matrix into a dataframe with 2 coordinates columns and the third intensity column
-    }
-    if(rotate == TRUE){
-        data1[, 1] <- rev(data1[, 1])
-    }
-    if(is.null(limit1)){
-        if(any(data1[, 3] %in% c(Inf, -Inf))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE THIRD COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        limit1 <- range(data1[, 3], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE limit1 ARGUMENT IS NULL -> RANGE OF data1 ARGUMENT HAS BEEN TAKEN: ", paste(fun_round(limit1), collapse = " "))
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        if(suppressWarnings(any(limit1 %in% c(Inf, -Inf)))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED LIMIT CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if(is.null(midpoint1)){
-        midpoint1 <- mean(limit1, na.rm = TRUE)
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE midpoint1 ARGUMENT IS NULL -> MEAN OF limit1 ARGUMENT HAS BEEN TAKEN: ", paste(fun_round(midpoint1), collapse = " "))
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }else if(fun_round(midpoint1, 9) != fun_round(mean(limit1), 9)){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE midpoint1 ARGUMENT (", fun_round(mean(midpoint1), 9), ") DOES NOT CORRESPOND TO THE MEAN OF THE limit1 ARGUMENT (", fun_round(mean(limit1), 9), "). COLOR SCALE IS NOT LINEAR")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    if( ! is.null(data2)){
-        if(all(is.matrix(data2))){
-            data2 <- reshape2::melt(data2) # transform a matrix into a dataframe with 2 coordinates columns and the third intensity column
-        }
-        if(rotate == TRUE){
-            data2[, 1] <- rev(data2[, 1])
-        }
-        data2[, 3] <- factor(data2[, 3]) # to converte continuous scale into discrete scale
-    }
-    tempo.gg.name <- "gg.indiv.plot."
-    tempo.gg.count <- 0 # to facilitate debugging
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data1, mapping = ggplot2::aes_string(x = names(data1)[ifelse(rotate == FALSE, 2, 1)], y = names(data1)[ifelse(rotate == FALSE, 1, 2)], fill = names(data1)[3]), show.legend = show.scale)) # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_gradient2(low = low.color1, high = high.color1, mid = mid.color1, midpoint = midpoint1, limit = limit1, breaks = c(limit1[1], midpoint1, limit1[2]), labels = fun_round(c(limit1[1], midpoint1, limit1[2])), name = legend.name1))
-    if( ! is.null(data2)){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data2, mapping = ggplot2::aes_string(x = names(data2)[ifelse(rotate == FALSE, 2, 1)], y = names(data2)[ifelse(rotate == FALSE, 1, 2)], alpha = names(data2)[3]), fill = color2, show.legend = FALSE))
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", values = if(invert2 == FALSE){c(0, alpha2)}else{c(alpha2, 0)}, guide = FALSE))
-        # assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data2, mapping = ggplot2::aes_string(x = names(data2)[ifelse(rotate == FALSE, 2, 1)], y = names(data2)[ifelse(rotate == FALSE, 1, 2)], group = names(data2)[3]), fill = data2[, 3], alpha = alpha2, show.legend = FALSE)) # BEWARE: this does not work if NA present, because geom_raster() has a tendency to complete empty spaces, and thus, behave differently than geom_tile(). See https://github.com/tidyverse/ggplot2/issues/3025
-    }
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_fixed()) # x = y
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_reverse())
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-    add.check <- TRUE
-    if( ! is.null(add)){ # if add is NULL, then = 0
-        if(grepl(pattern = "ggplot2::theme", add) == TRUE){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-            add.check <- FALSE
-        }
-    }
-    if(add.check == TRUE){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme(
-            text = ggplot2::element_text(size = text.size), 
-            plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
-            line = ggplot2::element_blank(),
-            axis.title = ggplot2::element_blank(),
-            axis.text = ggplot2::element_blank(),
-            axis.ticks = ggplot2::element_blank(),
-            panel.background = ggplot2::element_blank()
-        ))
-    }
-    if(plot == TRUE){
-        # suppressWarnings(
-        print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))
-        # )
-    }else{
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    if(return == TRUE){
-        output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
-        output <- output$data
-        names(output)[1] <- "heatmap"
-        if( ! is.null(data2)){
-            names(output)[2] <- "mask"
-        }
-        return(list(data = output, axes = output$layout$panel_params[[1]], scale = c(limit1[1],  midpoint1, limit1[2]), warnings = warning))
-    }
+fun_empty_graph <- function(text = NULL, text.size = 1, title = NULL, title.size = 1.5){
+# AIM
+# display an empty plot with a text in the middle of the window (for instance to specify that no plot can be drawn)
+# ARGUMENTS
+# text: character string of the message to display
+# text.size: numeric value of the text size
+# title: character string of the graph title
+# title.size: numeric value of the title size (in points)
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# RETURN
+# an empty plot
+# EXAMPLES
+# simple example
+# fun_empty_graph(text = "NO GRAPH")
+# white page
+# fun_empty_graph() # white page
+# all the arguments
+# fun_empty_graph(text = "NO GRAPH", text.size = 2, title = "GRAPH1", title.size = 1)
+# DEBUGGING
+# text = "NO GRAPH" ; title = "GRAPH1" ; text.size = 1
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+if( ! is.null(text)){
+tempo <- fun_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(title)){
+tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = title.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+ini.par <- par(no.readonly = TRUE) # to recover the initial graphical parameters if required (reset). BEWARE: this command alone opens a pdf of GUI window if no window already opened. But here, protected with the code because always a tempo window opened
+par(ann=FALSE, xaxt="n", yaxt="n", mar = rep(1, 4), bty = "n", xpd = NA)
+plot(1, 1, type = "n") # no display with type = "n"
+x.left.dev.region <- (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / ((par("omd")[2] - par("omd")[1]) * (par("plt")[2] - par("plt")[1]))) * par("omd")[1])
+y.top.dev.region <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par("omd")[4] - par("omd")[3]) * (par("plt")[4] - par("plt")[3]))) * (1 - par("omd")[4]))
+if( ! is.null(text)){
+text(x = 1, y = 1, labels = text, cex = text.size)
+}
+if( ! is.null(title)){
+text(x = x.left.dev.region, y = y.top.dev.region, labels = title, adj=c(0, 1), cex = title.size)
+}
+par(ini.par)
 }
 
 
-######## fun_gg_empty_graph() #### text to display for empty graphs
+################ gg graphics
 
 
+######## fun_gg_palette() #### ggplot2 default color palette
+
 
+ 
 
 
 # Check OK: clear to go Apollo
-fun_gg_empty_graph <- function(text = NULL, text.size = 12, title = NULL, title.size = 8, path.lib = NULL){
-    # AIM
-    # display an empty ggplot2 plot with a text in the middle of the window (for instance to specify that no plot can be drawn)
-    # ARGUMENTS
-    # text: character string of the message to display
-    # text.size: numeric value of the text size (in points)
-    # title: character string of the graph title
-    # title.size: numeric value of the title size (in points)
-    # path.lib: absolute path of the required packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # ggplot2
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_pack()
-    # RETURN
-    # an empty plot
-    # EXAMPLES
-    ### simple example
-    # fun_gg_empty_graph(text = "NO GRAPH")
-    ### white page
-    # fun_gg_empty_graph()
-    ### all the arguments
-    # fun_gg_empty_graph(text = "NO GRAPH", text.size = 8, title = "GRAPH1", title.size = 10, path.lib = NULL)
-    # DEBUGGING
-    # text = "NO GRAPH" ; text.size = 12 ; title = "GRAPH1" ; title.size = 8 ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    if( ! is.null(text)){
-        tempo <- fun_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(title)){
-        tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = title.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-    # end package checking
-    # main code
-    tempo.gg.name <- "gg.indiv.plot."
-    tempo.gg.count <- 0
-    # no need loop part
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
-    if( ! is.null(text)){
-        assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(data = data.frame(x = 1, y = 1), ggplot2::aes(x = x, y = y, label = text), size = text.size))
-    }
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_void())
-    assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
-        plot.title = ggplot2::element_text(size = title.size) # stronger than text
-    ))
-    suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+fun_gg_palette <- function(n, kind = "std"){
+# AIM
+# provide colors used by ggplot2
+# the interest is to use another single color that is not the red one used by default
+# for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+# ARGUMENTS
+# n: number of groups on the graph
+# kind: either "std" for standard gg colors, "dark" for darkened gg colors, or "light" for pastel gg colors
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# RETURN
+# the vector of hexadecimal colors
+# EXAMPLES
+# output of the function
+# fun_gg_palette(n = 2)
+# the ggplot2 palette when asking for 7 different colors
+# plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7))
+# selection of the 5th color of the ggplot2 palette made of 7 different colors
+# plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7)[5])
+# the ggplot2 palette made of 7 darkened colors
+# plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7, kind = "dark"))
+# the ggplot2 palette made of 7 lighten colors
+# plot(1:7, pch = 16, cex = 5, col = fun_gg_palette(n = 7, kind = "light"))
+# DEBUGGING
+# n = 0
+# kind = "std"
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = n, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & n == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": n ARGUMENT MUST BE A NON ZERO INTEGER. HERE IT IS: ", paste(n, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+tempo <- fun_check(data = kind, options = c("std", "dark", "light"), length = 1, fun.name = function.name) ; eval(ee)
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+hues = seq(15, 375, length = n + 1)
+hcl(h = hues, l = if(kind == "std"){65}else if(kind == "dark"){35}else if(kind == "light"){85}, c = 100)[1:n]
 }
 
 
-################ Graphic extraction
+######## fun_gg_just() #### ggplot2 justification of the axis labeling, depending on angle
 
 
-######## fun_trim() #### display values from a quantitative variable and trim according to defined cut-offs
+ 
 
 
 # Check OK: clear to go Apollo
-fun_trim <- function(data, displayed.nb = NULL, single.value.display = FALSE, trim.method = "", trim.cutoffs = c(0.05, 0.975), interval.scale.disp = TRUE, down.space = 0.75, left.space = 0.75, up.space = 0.3, right.space = 0.25, orient = 1, dist.legend = 0.37, box.type = "l", amplif.label = 1.25, amplif.axis = 1.25, std.x.range = TRUE, std.y.range = TRUE, cex.pt = 0.2, col.box = hsv(0.55, 0.8, 0.8), x.nb.inter.tick = 4, y.nb.inter.tick = 0, tick.length = 1, sec.tick.length = 0.75, corner.text = "", amplif.legend = 1, magnific.corner.text = 0.75, trim.return = FALSE){
-    # AIM
-    # trim and display values from a numeric vector or matrix
-    # plot 4 graphs: stripchart of values, stripchart of rank of values, hitogramme and normal QQPlot
-    # different kinds of intervals are displayed on the top of graphes to facilitate the analysis of the variable and a trimming setting
-    # the trimming interval chosen is displayed on top of graphs
-    # both trimmed and not trimmed values are returned in a list
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data: values to plot (either a numeric vector or a numeric matrix)
-    # displayed.nb: number of values displayed. If NULL, all the values are displayed. Otherwise, if the number of values is over displayed.nb, then displayed.nb values are displayed after random selection
-    # single.value.display: provide the 4 graphs if data is made of a single (potentially repeated value)? If FALSE, an empty graph is displayed if data is made of a single (potentially repeated value). And the return list is made of NULL compartments
-    # trim.method: Write "" if not required. write "mean.sd" if mean +/- sd has to be displayed as a trimming interval (only recommanded for normal distribution). Write "quantile" to display a trimming interval based on quantile cut-offs. No other possibility allowed. See trim.cutoffs below
-    # trim.cutoffs: 2 values cutoff for the trimming interval displayed, each value between 0 and 1. Not used if trim.method == "".The couple of values c(lower, upper) represents the lower and upper boundaries of the trimming interval (in proportion), which represent the interval of distribution kept (between 0 and 1). Example: trim.cutoffs = c(0.05, 0.975). What is strictly kept for the display is ]lower , upper[, boundaries excluded. Using the "mean.sd" method, 0.025 and 0.975 represent 95% CI which is mean +/- 1.96 * sd
-    # interval.scale.disp: display sd and quantiles intervals on top of graphs ?
-    # down.space: lower vertical margin (in inches, mai argument of par())
-    # left.space: left horizontal margin (in inches, mai argument of par())
-    # up.space: upper vertical margin between plot region and grapical window (in inches, mai argument of par())
-    # right.space: right horizontal margin (in inches, mai argument of par())
-    # orient: scale number orientation (las argument of par()). 0, always parallel to the axis; 1, always horizontal; 2, always perpendicular to the axis; 3, always vertical
-    # dist.legend: numeric value that moves axis legends away in inches (first number of mgp argument of par() but in inches thus / 0.2)
-    # box.type: bty argument of par(). Either "o", "l", "7", "c", "u", "]", the resulting box resembles the corresponding upper case letter. A value of "n" suppresses the box
-    # amplif.label: increase or decrease the size of the text in legends
-    # amplif.axis: increase or decrease the size of the scale numbers in axis
-    # std.x.range: standard range on the x-axis? TRUE (no range extend) or FALSE (4% range extend). Controls xaxs argument of par() (TRUE is xaxs = "i", FALSE is xaxs = "r")
-    # std.y.range: standard range on the y-axis? TRUE (no range extend) or FALSE (4% range extend). Controls yaxs argument of par() (TRUE is yaxs = "i", FALSE is yaxs = "r")
-    # cex.pt: size of points in stripcharts (in inches, thus cex.pt will be thereafter / 0.2)
-    # col.box: color of boxplot
-    # x.nb.inter.tick: number of secondary ticks between main ticks on x-axis (only if not log scale). Zero means non secondary ticks
-    # y.nb.inter.tick: number of secondary ticks between main ticks on y-axis (only if not log scale). Zero means non secondary ticks
-    # tick.length: length of the ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc. 0 means no tick
-    # sec.tick.length: length of the secondary ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
-    # corner.text: text to add at the top right corner of the window
-    # amplif.legend: increase or decrease the size of the text of legend
-    # magnific.corner.text: increase or decrease the size of the text
-    # trim.return: return the trimmed and non trimmed values? NULL returned for trimmed and non trimmed values if trim.method == ""
-    # RETURN
-    # a list containing:
-    # $trim.method: correspond to trim.method above
-    # $trim.cutoffs: correspond to trim.cutoffs above
-    # $real.trim.cutoffs: the two boundary values (in the unit of the numeric vector or numeric matrix analyzed). NULL 
-    # $trimmed.values: the values outside of the trimming interval as defined in trim.cutoffs above
-    # $kept.values: the values inside the trimming interval as defined in trim.cutoffs above
-    # EXAMPLES
-    # fun_trim(data = c(1:100, 1:10), displayed.nb = NULL, single.value.display = FALSE, trim.method = "mean.sd", trim.cutoffs = c(0.05, 0.975), interval.scale.disp = TRUE, down.space = 0.75, left.space = 0.75, up.space = 0.3, right.space = 0.25, orient = 1, dist.legend = 0.37, box.type = "l", amplif.label = 1.25, amplif.axis = 1.25, std.x.range = TRUE, std.y.range = TRUE, cex.pt = 0.2, col.box = hsv(0.55, 0.8, 0.8), x.nb.inter.tick = 4, y.nb.inter.tick = 0, tick.length = 0.5, sec.tick.length = 0.3, corner.text = "", amplif.legend = 1, magnific.corner.text = 0.75, trim.return = TRUE)
-    # DEBUGGING
-    # data = c(1:100, 1:10) ; displayed.nb = NULL ; single.value.display = FALSE ; trim.method = "quantile" ; trim.cutoffs = c(0.05, 0.975) ; interval.scale.disp = TRUE ; down.space = 1 ; left.space = 1 ; up.space = 0.5 ; right.space = 0.25 ; orient = 1 ; dist.legend = 0.5 ; box.type = "l" ; amplif.label = 1 ; amplif.axis = 1 ; std.x.range = TRUE ; std.y.range = TRUE ; cex.pt = 0.1 ; col.box = hsv(0.55, 0.8, 0.8) ; x.nb.inter.tick = 4 ; y.nb.inter.tick = 0 ; tick.length = 0.5 ; sec.tick.length = 0.3 ; corner.text = "" ; amplif.legend = 1 ; magnific.corner.text = 0.75 ; trim.return = TRUE # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if( ! (all(class(data) == "numeric") | all(class(data) == "integer") | (all(class(data) == "matrix") & mode(data) == "numeric"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A NUMERIC VECTOR OR NUMERIC MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    if( ! is.null(displayed.nb)){
-        tempo <- fun_check(data = displayed.nb, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-        if(displayed.nb < 2){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": displayed.nb ARGUMENT MUST BE A SINGLE INTEGER VALUE GREATER THAN 1 AND NOT: ", paste(displayed.nb, collapse = " "), "\n\n================\n\n")
-            cat(tempo.cat)
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = single.value.display, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = trim.method, options = c("", "mean.sd", "quantile"), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = trim.cutoffs, class = "vector", mode = "numeric", length = 2, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = interval.scale.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = cex.pt, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = col.box, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = x.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = y.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = sec.tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = amplif.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = trim.return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    if(class(data) == "matrix"){
-        data <- as.vector(data)
-    }
-    color.cut <- hsv(0.75, 1, 1) # color of interval selected
-    col.mean <- hsv(0.25, 1, 0.8) # color of interval using mean+/-sd
-    col.quantile <- "orange" # color of interval using quantiles
-    quantiles.selection <- c(0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 0.75, 0.9, 0.95, 0.975, 0.99) # quantiles used in axis to help for choosing trimming cutoffs
-    if(single.value.display == FALSE & length(unique(data)) == 1){
-        par(bty = "n", xaxt = "n", yaxt = "n", xpd = TRUE)
-        plot(1, pch = 16, col = "white", xlab = "", ylab = "")
-        text(x = 1, y = 1, paste0("No graphic displayed\nBecause data made of a single different value (", formatC(as.double(table(data))), ")"), cex = 2)
-        output <- list(trim.method = NULL, trim.cutoffs = NULL, real.trim.cutoffs = NULL, trimmed.values = NULL, kept.values = NULL)
-    }else{
-        output <- list(trim.method = trim.method, trim.cutoffs = trim.cutoffs, real.trim.cutoffs = NULL, trimmed.values = NULL, kept.values = NULL)
-        fun.rug <- function(sec.tick.length.f = sec.tick.length, x.nb.inter.tick.f = x.nb.inter.tick, y.nb.inter.tick.f = y.nb.inter.tick){
-            if(x.nb.inter.tick.f > 0){
-                inter.tick.unit <- (par("xaxp")[2] - par("xaxp")[1]) / par("xaxp")[3]
-                par.ini <- par()[c("xpd", "tcl")]
-                par(xpd = FALSE)
-                par(tcl = -par()$mgp[2] * sec.tick.length.f) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
-                suppressWarnings(rug(seq(par("xaxp")[1] - 10 * inter.tick.unit, par("xaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + x.nb.inter.tick.f)), ticksize = NA, side = 1)) # ticksize = NA to allow the use of par()$tcl value
-                par(par.ini)
-                rm(par.ini)
-            }
-            if(y.nb.inter.tick.f > 0){
-                inter.tick.unit <- (par("yaxp")[2] - par("yaxp")[1]) / par("yaxp")[3]
-                par.ini <- par()[c("xpd", "tcl")]
-                par(xpd = FALSE)
-                par(tcl = -par()$mgp[2] * sec.tick.length.f) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
-                suppressWarnings(rug(seq(par("yaxp")[1] - 10 * inter.tick.unit, par("yaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + y.nb.inter.tick.f)), ticksize = NA, side = 2)) # ticksize = NA to allow the use of par()$tcl value
-                par(par.ini)
-                rm(par.ini)
-            }
-        }
-        fun.add.cut <- function(data.f, trim.method.f = trim.method, trim.cutoffs.f = trim.cutoffs, color.cut.f = color.cut, return.f = FALSE){
-            # DEBUGGING
-            # data.f = data ; trim.method.f = "mean.sd"; trim.cutoffs.f = trim.cutoffs ; color.cut.f = color.cut ; return.f = TRUE
-            real.trim.cutoffs.f <- NULL
-            if(trim.method.f != ""){
-                data.f <- sort(data.f)
-                par.ini <- par()$xpd
-                par(xpd = FALSE)
-                if(trim.method.f == "mean.sd"){
-                    real.trim.cutoffs.f <- qnorm(trim.cutoffs.f, mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE))
-                    abline(v = qnorm(trim.cutoffs.f, mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), col = color.cut.f)
-                    segments(qnorm(trim.cutoffs.f[1], mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), par()$usr[4] * 0.75, qnorm(trim.cutoffs.f[2], mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), par()$usr[4] * 0.75, col = color.cut.f)
-                }
-                if(trim.method.f == "quantile"){
-                    real.trim.cutoffs.f <- quantile(data.f, probs = trim.cutoffs.f, type = 7)
-                    abline(v = quantile(data.f, probs = trim.cutoffs.f, type = 7), col = color.cut.f)
-                    segments(quantile(data.f, probs = trim.cutoffs.f[1], type = 7), par()$usr[4] * 0.75, quantile(data.f, probs = trim.cutoffs.f[2], type = 7), par()$usr[4] * 0.75, col = color.cut.f)
-                }
-                par(par.ini)
-                if(return.f == TRUE){
-                    trimmed.values.f <- data.f[data.f <= real.trim.cutoffs.f[1] | data.f >= real.trim.cutoffs.f[2]]
-                    kept.values.f <- data.f[data.f > real.trim.cutoffs.f[1] & data.f < real.trim.cutoffs.f[2]]
-                }
-            }else{
-                real.trim.cutoffs.f <- NULL
-                trimmed.values.f <- NULL
-                kept.values.f <- NULL
-            }
-            if(return.f == TRUE){
-                output <- list(trim.method = trim.method.f, trim.cutoffs = trim.cutoffs.f, real.trim.cutoffs = real.trim.cutoffs.f, trimmed.values = trimmed.values.f, kept.values = kept.values.f)
-                return(output)
-            }
-        }
-        fun.interval.scale.display <- function(data.f, col.quantile.f = col.quantile, quantiles.selection.f = quantiles.selection, col.mean.f = col.mean){ # intervals on top of graphs
-            par.ini <- par()[c("mgp", "xpd")]
-            par(mgp = c(0.25, 0.25, 0), xpd = NA)
-            axis(side = 3, at = c(par()$usr[1], par()$usr[2]), labels = rep("", 2), col = col.quantile.f, lwd.ticks = 0)
-            par(xpd = FALSE)
-            axis(side = 3, at = quantile(as.vector(data.f), probs = quantiles.selection.f, type = 7), labels = quantiles.selection.f, col.axis = col.quantile.f, col = col.quantile.f)
-            par(mgp = c(1.75, 1.75, 1.5), xpd = NA)
-            axis(side = 3, at = c(par()$usr[1], par()$usr[2]), labels = rep("", 2), col = col.mean.f, lwd.ticks = 0)
-            par(xpd = FALSE)
-            axis(side = 3, at = m + s * qnorm(quantiles.selection.f), labels = formatC(round(qnorm(quantiles.selection.f), 2)), col.axis = col.mean.f, col = col.mean.f, lwd.ticks = 1)
-            par(par.ini)
-        }
-        zone<-matrix(1:4, ncol=2)
-        layout(zone)
-        par(omi = c(0, 0, 1.5, 0), mai = c(down.space, left.space, up.space, right.space), las = orient, mgp = c(dist.legend / 0.2, 0.5, 0), xpd = FALSE, bty= box.type, cex.lab = amplif.label, cex.axis = amplif.axis, xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
-        par(tcl = -par()$mgp[2] * tick.length) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
-        if(is.null(displayed.nb)){
-            sampled.data <- as.vector(data)
-            if(corner.text == ""){
-                corner.text <- paste0("ALL VALUES OF THE DATASET DISPLAYED")
-            }else{
-                corner.text <- paste0(corner.text, "\nALL VALUES OF THE DATASET DISPLAYED")
-            }
-        }else{
-            if(length(as.vector(data)) > displayed.nb){
-                sampled.data <- sample(as.vector(data), displayed.nb, replace = FALSE)
-                if(corner.text == ""){
-                    corner.text <- paste0("BEWARE: ONLY ", displayed.nb, " VALUES ARE DISPLAYED AMONG THE ", length(as.vector(data)), " VALUES OF THE DATASET ANALYZED")
-                }else{
-                    corner.text <- paste0(corner.text, "\nBEWARE: ONLY ", displayed.nb, " VALUES ARE DISPLAYED AMONG THE ", length(as.vector(data)), " VALUES OF THE DATASET ANALYZED")
-                }
-            }else{
-                sampled.data <- as.vector(data)
-                if(corner.text == ""){
-                    corner.text <- paste0("BEWARE: THE DISPLAYED NUMBER OF VALUES PARAMETER ", deparse(substitute(displayed.nb)), " HAS BEEN SET TO ", displayed.nb, " WHICH IS ABOVE THE NUMBER OF VALUES OF THE DATASET ANALYZED -> ALL VALUES DISPLAYED")
-                }else{
-                    corner.text <- paste0(corner.text, "\nBEWARE: THE DISPLAYED NUMBER OF VALUES PARAMETER ", deparse(substitute(displayed.nb)), " HAS BEEN SET TO ", displayed.nb, " WHICH IS ABOVE THE NUMBER OF VALUES OF THE DATASET ANALYZED -> ALL VALUES DISPLAYED")
-                }
-            }
-        }
-        stripchart(sampled.data, method="jitter", jitter=0.4, vertical=FALSE, ylim=c(0.5, 1.5), group.names = "", xlab = "Value", ylab="", pch=1, cex = cex.pt / 0.2)
-        fun.rug(y.nb.inter.tick.f = 0)
-        boxplot(as.vector(data), horizontal=TRUE, add=TRUE, boxwex = 0.4, staplecol = col.box, whiskcol = col.box, medcol = col.box, boxcol = col.box, range = 0, whisklty = 1)
-        m <- mean(as.vector(data), na.rm = TRUE)
-        s <- sd(as.vector(data), na.rm = TRUE)
-        segments(m, 0.8, m, 1, lwd=2, col="red") # mean 
-        segments(m -1.96 * s, 0.9, m + 1.96 * s, 0.9, lwd=1, col="red") # mean 
-        graph.xlim <- par()$usr[1:2] # for hist() and qqnorm() below
-        if(interval.scale.disp == TRUE){
-            fun.interval.scale.display(data.f = data)
-            if(corner.text == ""){
-                corner.text <- paste0("MULTIPLYING FACTOR DISPLAYED (MEAN +/- SD) ON SCALES: ", paste(formatC(round(qnorm(quantiles.selection), 2))[-(1:(length(quantiles.selection) - 1) / 2)], collapse = ", "), "\nQUANTILES DISPLAYED ON SCALES: ", paste(quantiles.selection, collapse = ", "))
-            }else{
-                corner.text <- paste0(corner.text, "\nMULTIPLYING FACTOR DISPLAYED (MEAN +/- SD) ON SCALES: ", paste(formatC(round(qnorm(quantiles.selection), 2))[-(1:(length(quantiles.selection) - 1) / 2)], collapse = ", "), "\nQUANTILES DISPLAYED ON SCALES: ", paste(quantiles.selection, collapse = ", "))
-            }
-        }
-        output.tempo <- fun.add.cut(data.f = data, return.f = TRUE) # to recover real.trim.cutoffs
-        if(trim.return == TRUE){
-            output <- output.tempo
-        }
-        par(xpd = NA)
-        if(trim.method != ""){
-            if(corner.text == ""){
-                corner.text <- paste0("SELECTED CUT-OFFS (PROPORTION): ", paste(trim.cutoffs, collapse = ", "), "\nSELECTED CUT-OFFS: ", paste(output.tempo$real.trim.cutoffs, collapse = ", "))
-            }else{
-                corner.text <- paste0(corner.text, "\nSELECTED CUT-OFFS (PROPORTION): ", paste(trim.cutoffs, collapse = ", "), "\nSELECTED CUT-OFFS: ", paste(output.tempo$real.trim.cutoffs, collapse = ", "))
-            }
-            if(interval.scale.disp == TRUE){
-                legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- 1.96sd", paste0("Trimming interval: ", paste0(trim.cutoffs, collapse = " , ")), "Mean +/- sd multiplying factor", "Quantile"), yjust = 0, lty=1, col=c(col.box, "red", color.cut, col.mean, col.quantile), bty="n", cex = amplif.legend)
-            }else{
-                legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- 1.96sd", paste0("Trimming interval: ", paste0(trim.cutoffs, collapse = " , "))), yjust = 0, lty=1, col=c(col.box, "red", color.cut), bty="n", cex = amplif.legend, y.intersp=1.25)
-            }
-        }else{
-            if(interval.scale.disp == TRUE){
-                legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- sd", "Mean +/- sd multiplying factor", "Quantile"), yjust = 0, lty=1, col=c(col.box, "red", col.mean, col.quantile), bty="n", cex = amplif.legend)
-            }else{
-                legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- sd"), yjust = 0, lty=1, col=c(col.box, "red"), bty="n", cex = amplif.legend, y.intersp=1.25)
-            }
-        }
-        par(xpd = FALSE, xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
-        hist(as.vector(data), main = "", breaks = seq(min(as.vector(data), na.rm = TRUE), max(as.vector(data), na.rm = TRUE), length.out = length(as.vector(data)) / 10), xlim = graph.xlim, xlab = "Value", ylab="Density", col = grey(0.25))
-        abline(h = par()$usr[3])
-        fun.rug()
-        if(interval.scale.disp == TRUE){
-            fun.interval.scale.display(data.f = data)
-        }
-        fun.add.cut(data.f = data)
-        par(xaxs = ifelse(std.x.range, "i", "r"))
-        stripchart(rank(sampled.data), method="stack", vertical=FALSE, ylim=c(0.99, 1.3), group.names = "", xlab = "Rank of values", ylab="", pch=1, cex = cex.pt / 0.2)
-        fun.rug(y.nb.inter.tick.f = 0)
-        x.text <- par("usr")[2] + (par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1]) * (1 - par("plt")[2]) / 2
-        y.text <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par()$omd[4] / 2) * ((par("plt")[4] - par("plt")[3])))) * (1 - par("omd")[4])) # BEWARE. Here in "(par()$omd[4] / 2", division by two because there are 2 graphs staked on the y axis, and not one
-        par(xpd=NA)
-        text(x = x.text, y = y.text, paste0(corner.text), adj=c(1, 1.1), cex = magnific.corner.text) # text at the topright corner
-        par(xpd=FALSE)
-        par(xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
-        qqnorm(as.vector(sampled.data), main = "", datax = TRUE, ylab = "Value", pch = 1, col = "red", cex = cex.pt / 0.2)
-        fun.rug()
-        if(diff(quantile(as.vector(data), probs = c(0.25, 0.75), na.rm = TRUE)) != 0){ # otherwise, error generated
-            qqline(as.vector(data), datax = TRUE)
-        }
-        if(interval.scale.disp == TRUE){
-            fun.interval.scale.display(data.f = data)
-        }
-        fun.add.cut(data.f = data)
-    }
-    if(trim.return == TRUE){
-        return(output)
-    }
+fun_gg_just <- function(angle, axis){
+# AIM
+# provide correct justification for axis labeling, depending on the chosen angle
+# ARGUMENTS
+# angle: integer value of the text angle for the axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+# axis: which axis for? Either "x" or "y"
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# RETURN
+# a list containing:
+# $angle: the submitted angle (value potentially reduced to fit the [-360 ; 360] interval, e.g., 460 -> 100, without impact on the final angle displayed)
+# $hjust: the horizontal justification
+# $vjust: the vertical justification
+# EXAMPLES
+# fun_gg_just(angle = 45, axis = "x")
+# fun_gg_just(angle = (360*2 + 45), axis = "y")
+# output <- fun_gg_just(angle = 45, axis = "x") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = output$angle, hjust = output$hjust, vjust = output$vjust))
+# output <- fun_gg_just(angle = -45, axis = "y") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.y = ggplot2::element_text(angle = output$angle, hjust = output$hjust, vjust = output$vjust)) + ggplot2::coord_flip()
+# output1 <- fun_gg_just(angle = 90, axis = "x") ; output2 <- fun_gg_just(angle = -45, axis = "y") ; obs1 <- data.frame(time = 1:20, group = rep(c("CLASS_1", "CLASS_2"), times = 10)) ; ggplot2::ggplot() + ggplot2::geom_bar(data = obs1, mapping = ggplot2::aes(x = group, y = time), stat = "identity") + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = output1$angle, hjust = output1$hjust, vjust = output1$vjust), axis.text.y = ggplot2::element_text(angle = output2$angle, hjust = output2$hjust, vjust = output2$vjust))
+# DEBUGGING
+# angle = 45 ; axis = "y"
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
 }
-
-
-######## fun_segmentation() #### segment a dot cloud on a scatterplot and define the dots from another cloud outside the segmentation
-
-
-# Check OK: clear to go Apollo
-fun_segmentation <- function(data1, x1, y1, x.range.split = NULL, x.step.factor = 10, y.range.split = NULL, y.step.factor = 10, error = 0, data2 = NULL, x2, y2, data2.pb.dot = "unknown", xy.cross.kind = "&", plot = FALSE, graph.in.file = FALSE, raster = TRUE, warn.print = FALSE, path.lib = NULL){
-    # AIM
-    # if data1 is a data frame corresponding to the data set of a scatterplot (with a x column for x-axis values and a y column for the y-axis column), then fun_segmentation() delimits a frame around the dots cloud using a sliding window set by x.range.split and x.step.factor to frame the top and bottom part of the cloud, and set by y.range.split and y.step.factor to frame the left and right part of the cloud
-    # if a second data frame is provided, corresponding to the data set of a scatterplot (with a x column for x-axis values and a y column for the y-axis column), then fun_segmentation() defines the dots of this data frame, outside of the frame of the first data frame
-    # WARNINGS
-    # if dots from data2 look significant on the graph (outside the frame) but are not (not black on the last figure), this is probably because the frame is flat on the zero coordinate (no volume inside the frame at this position). Thus, no way to conclude that data2 dots here are significant. These dots are refered to as "unknown". The pb.dot argument deals with such dots
-    # dots that are sometimes inside and outside the frame, depending on the sliding windows, are treated differently: they are removed. Such dots are neither classified as "signif", "non signif" or "unknown", but as "inconsistent"
-    # unknown dots are treated as finally significant, not significant, or unknown (data2.pb.dot argument) for each x-axis and y-axis separately. Then, the union or intersection of significant dots is performed (argument xy.cross.kind). See the example section
-    # ARGUMENTS
-    # data1: a dataframe containing a column of x-axis values and a column of y-axis values
-    # x1: character string of the data1 column name for x-axis (first column of data1 by default)
-    # y1: character string of the data1 column name for y-axis (second column of data1 by default)
-    # x.range.split: positive non null numeric value giving the number of interval on the x value range. if x.range is the range of the dots on the x-axis, then abs(diff(x.range) / x.range.split) gives the window size. Window size decreases when range.split increases. In unit of x-axis. Write NULL if not required. At least one of the x.range.split and y.range.split must be non NULL
-    # x.step.factor: positive non null numeric value giving the shift step of the window. If x.step.factor = 1, no overlap during the sliding (when the window slides from position n to position n+1, no overlap between the two positions). If x.step.factor = 2, 50% of overlap (when the window slides from position n to position n+1, the window on position n+1 overlap 50% of the window when it was on position n)
-    # y.range.split: same as x.range.split for the y-axis. At least one of the x.range.split and y.range.split must be non NULL
-    # y.step.factor: same as x.step.factor for the y-axis
-    # error: proportion (from 0 to 1) of false positives (i.e., proportion of dots from data1 outside of the frame). 0.05 means 5% of the dots from data1 outside of the frame
-    # data2: a dataframe containing a column of x-axis values and a column of y-axis values, for which outside dots of the data1 cloud has to be determined. Write NULL if not required
-    # x2: character string of the data1 column name for x-axis (first column of data1 by default)
-    # y2: character string of the data1 column name for y-axis (second column of data1 by default)
-    # data2.pb.dot: unknown dots are explain in the warning section above. If "signif", then the unknown dots are finally considered as significant (outside the frame). If "not.signif", then the unknown dots are finally considered as non significant (inside the frame). If "unknown", no conclusion are drawn from these dots. See the examples below
-    # xy.cross.kind: if data2 is non null and if both x.range.split and y.range.split are non null, which dots are finally significants? Write "&" for intersection of outside dots on x and on y. Write "|" for union of outside dots on x and on y. See the examples below
-    # plot: logical. Print graphs that check the frame?
-    # graph.in.file: logical. Graphs sent into a graphic device already opened? If FALSE, GUI are opened for each graph. If TRUE, no GUI are opended. The graphs are displayed on the current active graphic device. Ignored if plot is FALSE
-    # raster: logical. Dots in raster mode? If FALSE, dots from each geom_point from geom argument are in vectorial mode (bigger pdf and long to display if millions of dots). If TRUE, dots from each geom_point from geom argument are in matricial mode (smaller pdf and easy display if millions of dots, but long to generate the layer). If TRUE, the region plot will be square to avoid a bug in fun_gg_point_rast(). If TRUE, solve the transparency problem with some GUI. Not considered if plot is FALSE
-    # warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
-    # path.lib: absolute path of the required packages, if not in the default folders. Ignored if plot is FALSE
-    # REQUIRED PACKAGES
-    # ggplot2 if plot is TRUE
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # if plot is TRUE:
-    # fun_pack()
-    # fun_open()
-    # fun_gg_palette()
-    # fun_gg_scatter()
-    # fun_gg_empty_graph()
-    # fun_close()
-    # RETURN
-    # several graphs if plot is TRUE
-    # a list containing:
-    # $data1.removed.row.nb: which rows have been removed due to NA; NaN, -Inf or Inf detection in x1 or y1 columns (NULL if no row removed)
-    # $data1.removed.rows: removed rows (NULL if no row removed)
-    # $data2.removed.row.nb: which rows have been removed due to NA; NaN, -Inf or Inf detection in x2 or y2 columns (NULL if no row removed)
-    # $data2.removed.rows: removed rows (NULL if no row removed)
-    # $hframe: x and y coordinates of the bottom and top frames for frame plotting (frame1 for the left step and frame2 for the right step)
-    # $vframe: x and y coordinates of the left and right frames for frame plotting (frame1 for the down step and frame2 for the top step)
-    # $data1.signif.dot: the significant dots of data1 (i.e., dots outside the frame). A good segmentation should not have any data1.signif.dot
-    # $data1.non.signif.dot: the non significant dots of data1 (i.e., dots inside the frame)
-    # $data1.inconsistent.dot: see the warning section above
-    # $data2.signif.dot: the significant dots of data2 if non NULL (i.e., dots outside the frame)
-    # $data2.non.signif.dot: the non significant dots of data2 (i.e., dots inside the frame)
-    # $data2.unknown.dot: the problematic dots of data2 (i.e., data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots). Is systematically NULL except if argument data2.pb.dot = "unknown" and some data2 dots are in such situation. Modifying the segmentation x.range.split, x.step.factor, y.range.split, y.step.factor arguments can solve this problem
-    # $data2.inconsistent.dot: see the warning section above
-    # $axes: the x-axis and y-axis info
-    # $warnings: the warning messages. Use cat() for proper display. NULL if no warning
-    # EXAMPLES
-    # example explaining the unknown and inconsistent dots, and the cross 
-    
-    # set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data1[5:7, 2] <- NA ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; data2[11:13, 1] <- Inf ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = 20, x.step.factor = 10, y.range.split = 23, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "not.signif", xy.cross.kind = "|", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
-    # set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = NULL, x.step.factor = 10, y.range.split = 23, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "unknown", xy.cross.kind = "|", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
-    # set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = 20, x.step.factor = 10, y.range.split = NULL, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "unknown", xy.cross.kind = "&", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
-    # DEBUGGING
-    # set.seed(1) ; data1 = data.frame(x = rnorm(50), y = rnorm(50)) ; data1[5:7, 2] <- NA ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = 5 ; x.step.factor = 10 ; y.range.split = 5 ; y.step.factor = 10 ; error = 0 ; data2 = data.frame(x = rnorm(50, 0, 2), y = rnorm(50, 0, 2)) ; set.seed(NULL) ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "|" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
-    # set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = NULL ; x.step.factor = 10 ; y.range.split = 23 ; y.step.factor = 10 ; error = 0 ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "|" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
-    # set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = 20 ; x.step.factor = 10 ; y.range.split = NULL ; y.step.factor = 10 ; error = 0 ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "&" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    warning <- NULL
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & length(data1) < 2){
-        cat(paste0("\n\n============\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OF AT LEAST 2 COLUMNS\n\n============\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = x1, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (x1 %in% names(data1))){
-        cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x1 ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }else if(tempo$problem == FALSE & x1 %in% names(data1)){
-        tempo <- fun_check(data = data1[, x1], data.name = "x1 COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = y1, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & ! (y1 %in% names(data1))){
-        cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y1 ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }else if(tempo$problem == FALSE & y1 %in% names(data1)){
-        tempo <- fun_check(data = data1[, y1], data.name = "y1 COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-    }
-    if(is.null(x.range.split) & is.null(y.range.split)){
-        cat(paste0("\n\n================\n\nERROR IN ", function.name, ": AT LEAST ONE OF THE x.range.split AND y.range.split ARGUMENTS MUST BE NON NULL\n\n================\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }
-    if( ! is.null(x.range.split)){
-        tempo <- fun_check(data = x.range.split, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & x.range.split < 1){
-            cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x.range.split ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(y.range.split)){
-        tempo <- fun_check(data = y.range.split, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & y.range.split < 1){
-            cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y.range.split ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    tempo <- fun_check(data = x.step.factor, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & x.step.factor < 1){
-        cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x.step.factor ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = y.step.factor, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & y.step.factor < 1){
-        cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y.step.factor ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = error, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(data2)){
-        if(is.null(x2) | is.null(y2)){
-            cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x2 AND y2 ARGUMENTS CANNOT BE NULL IF data2 ARGUMENT IS NON NULL\n\n================\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-        tempo <- fun_check(data = data2, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & length(data2) < 2){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": data2 ARGUMENT MUST BE A DATA FRAME OF AT LEAST 2 COLUMNS\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-        if( ! is.null(x2)){
-            tempo <- fun_check(data = x2, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-            if(tempo$problem == FALSE & ! (x2 %in% names(data2))){
-                cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x2 ARGUMENT MUST BE A COLUMN NAME OF data2\n\n================\n\n"))
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & x2 %in% names(data2)){
-                tempo <- fun_check(data = data2[, x2], data.name = "x2 COLUMN OF data2", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-            }
-        }
-        if( ! is.null(y2)){
-            tempo <- fun_check(data = y2, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
-            if(tempo$problem == FALSE & ! (y2 %in% names(data2))){
-                cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y2 ARGUMENT MUST BE A COLUMN NAME OF data2\n\n================\n\n"))
-                arg.check <- c(arg.check, TRUE)
-            }else if(tempo$problem == FALSE & y2 %in% names(data2)){
-                tempo <- fun_check(data = data2[, y2], data.name = "y2 COLUMN OF data2", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
-            }
-        }
-    }
-    if( ! is.null(data2)){
-        tempo <- fun_check(data = data2.pb.dot, options = c("signif", "not.signif", "unknown"), length = 1, fun.name = function.name) ; eval(ee)
-    }
-    if( ! (is.null(x.range.split)) & ! (is.null(y.range.split))){
-        tempo <- fun_check(data = xy.cross.kind, options = c("&", "|"), length = 1, fun.name = function.name) ; eval(ee)
-    }
-    tempo <- fun_check(data = plot, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & plot == TRUE){
-        tempo <- fun_check(data = raster, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-        tempo <- fun_check(data = graph.in.file, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & graph.in.file == TRUE & is.null(dev.list())){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \ngraph.in.file PARAMETER SET TO TRUE BUT NO ACTIVE GRAPHIC DEVICE DETECTED\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }else if(tempo$problem == FALSE & graph.in.file == TRUE & ! is.null(dev.list())){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": GRAPHS PRINTED IN THE CURRENT DEVICE (TYPE ", toupper(names(dev.cur())), ")")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        if( ! is.null(path.lib)){
-            tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
-            if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-                cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-                arg.check <- c(arg.check, TRUE)
-            }
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # other required function checking
-    if(plot == TRUE){
-        if(length(find("fun_pack", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(length(find("fun_open", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(length(find("fun_gg_palette", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(length(find("fun_gg_empty_graph", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_empty_graph() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(length(find("fun_gg_scatter", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_scatter() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        if(length(find("fun_close", mode = "function")) == 0){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_close() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end other required function checking
-    # package checking
-    if(plot == TRUE){
-        fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
-    }
-    # end package checking
-    # main code
-    # na and Inf detection and removal (done now to be sure of the correct length of categ)
-    data1.removed.row.nb <- NULL
-    data1.removed.rows <- NULL
-    data2.removed.row.nb <- NULL
-    data2.removed.rows <- NULL
-    if(any(is.na(data1[, c(x1, y1)])) | any(is.infinite(data1[, x1])) | any(is.infinite(data1[, y1]))){
-        tempo.na <- unlist(lapply(lapply(c(data1[c(x1, y1)]), FUN = is.na), FUN = which))
-        tempo.inf <- unlist(lapply(lapply(c(data1[c(x1, y1)]), FUN = is.infinite), FUN = which))
-        data1.removed.row.nb <- sort(unique(c(tempo.na, tempo.inf)))
-        if(length(data1.removed.row.nb) > 0){
-            data1.removed.rows <- data1[data1.removed.row.nb, ]
-        }
-        if(length(data1.removed.row.nb) == nrow(data1)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": AT LEAST ONE NA, NaN, -Inf OR Inf DETECTED IN EACH ROW OF data1. FUNCTION CANNOT BE USED ON EMPTY DATA FRAME\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(length(data1.removed.row.nb) > 0){
-            data1 <- data1[-data1.removed.row.nb, ]
-        }
-        if(nrow(data1) == 0){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x1, y1), collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $data1.removed.row.nb AND $data1.removed.rows)")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }else{
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NO NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x1, y1), collapse = " "), " OF data1. NO ROW REMOVED")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    if( ! is.null(data2)){
-        if(any(is.na(data2[, c(x2, y2)])) | any(is.infinite(data2[, x2])) | any(is.infinite(data2[, y2]))){
-            tempo.na <- unlist(lapply(lapply(c(data2[c(x2, y2)]), FUN = is.na), FUN = which))
-            tempo.inf <- unlist(lapply(lapply(c(data2[c(x2, y2)]), FUN = is.infinite), FUN = which))
-            data2.removed.row.nb <- sort(unique(c(tempo.na, tempo.inf)))
-            if(length(data2.removed.row.nb) > 0){
-                data2.removed.rows <- data2[data2.removed.row.nb, ]
-            }
-            if(length(data2.removed.row.nb) == nrow(data2)){
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": AT LEAST ONE NA, NaN, -Inf OR Inf DETECTED IN EACH ROW OF data2. FUNCTION CANNOT BE USED ON EMPTY DATA FRAME\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            if(length(data2.removed.row.nb) > 0){
-                data2 <- data2[-data2.removed.row.nb, ]
-            }
-            if(nrow(data2) == 0){
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x2, y2), collapse = " "), " OF data2 AND CORRESPONDING ROWS REMOVED (SEE $data2.removed.row.nb AND $data2.removed.rows)")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }else{
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NO NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x2, y2), collapse = " "), " OF data2. NO ROW REMOVED")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-    }
-    # end na and Inf detection and removal (done now to be sure of the correct length of categ)
-    # row annotation (dot number)
-    # data1 <- data1[ ! duplicated(data1[, c(x1, y1)]), ] # do not remove the dots that have same x and y values, because they will have different dot number -> not the same position on the matrices (so true for symmetric matrices)
-    data1 <- cbind(data1, DOT_NB = 1:nrow(data1))
-    if( ! is.null(data2)){
-        # data2 <- data2[ ! duplicated(data2[, c(x2, y2)]), ] # do not remove the dots that have same x and y values, because they will have different dot number -> not the same position on the matrices (so true for symmetric matrices)
-        data2 <- cbind(data2, DOT_NB = 1:nrow(data2))
-    }
-    # end row annotation (dot number)
-    
-    
-    
-    
-    # Method using x unit interval 
-    # may be create vector of each column to increase speed
-    x.data1.l <- NULL # x coord of the y upper and lower limits defined on the data1 cloud for left step line
-    x.data1.r <- NULL # x coord of the y upper and lower limits defined on the data1 cloud for right step line
-    y.data1.down.limit.l <- NULL # lower limit of the data1 cloud for left step line
-    y.data1.top.limit.l <- NULL # upper limit of the data1 cloud for left step line
-    y.data1.down.limit.r <- NULL # lower limit of the data1 cloud for right step line
-    y.data1.top.limit.r <- NULL # upper limit of the data1 cloud for left step line
-    if(any(data1[, x1] %in% c(Inf, -Inf))){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE x1 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    x.range <- range(data1[, x1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    if(suppressWarnings(any(x.range %in% c(Inf, -Inf)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED x.range CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(any(data1[, y1] %in% c(Inf, -Inf))){
-        tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y1 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-        warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-    }
-    y.range <- range(data1[, y1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    if(suppressWarnings(any(x.range %in% c(Inf, -Inf)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED y.range CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    x.range.plot <- range(data1[, x1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    y.range.plot <- range(data1[, y1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    if( ! is.null(data2)){
-        if(any(data2[, x2] %in% c(Inf, -Inf))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE x2 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        x.range.plot <- range(data1[, x1], data2[, x2], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-        if(any(data2[, y2] %in% c(Inf, -Inf))){
-            tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y2 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
-            warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-        }
-        y.range.plot <- range(data1[, y1], data2[, y2], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
-    }
-    if(suppressWarnings(any(x.range.plot %in% c(Inf, -Inf)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED x.range.plot CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 (AND data2?) ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(suppressWarnings(any(y.range.plot %in% c(Inf, -Inf)))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED y.range.plot CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 (AND data2?) ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(x.range.split)){
-        # data.frame ordering to slide the window from small to big values + sliding window definition
-        data1 <- data1[order(data1[, x1], na.last = TRUE), ]
-        if( ! is.null(data2)){
-            data2 <- data2[order(data2[, x2], na.last = TRUE), ]
-        }
-        x.win.size <- abs(diff(x.range) / x.range.split) # in unit of x-axis
-        step <- x.win.size / x.step.factor
-        # end data.frame ordering to slide the window from small to big values + sliding window definition
-        # x-axis sliding and y-axis limits of the data1 cloud -> y significant data2
-        loop.nb <- ceiling((diff(x.range) - x.win.size) / step) # x.win.size + n * step covers the x range if x.win.size + n * step >= diff(x.range), thus if n >= (diff(x.range) - x.win.size) / step 
-        y.outside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are upper or lower than the frame
-        y.inside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are not upper or lower than the frame
-        y.data1.median <- median(data1[, y1], na.rm = TRUE) # will be used for sliding windows without data1 in it
-        if( ! is.null(data2)){
-            y.outside.data2.dot.nb <- integer() # vector that will contain the selected 1D coordinates (i.e., dots) of data2 that are upper or lower than the data1 frame
-            y.inside.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are not upper or lower than the data1 frame
-            y.unknown.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are problematic: data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots
-            # recover data2 dots outside the range of data1
-            if(any(data2[, x2] < x.range[1])){
-                y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[data2[, x2] < x.range[1]])
-                #tempo.warning & indicate the interval
-            }
-            if(any(data2[, x2] > x.range[2])){
-                y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[data2[, x2] > x.range[2]])
-                #tempo.warning & indicate the interval
-            }
-            # end recover data2 dots outside the range of data1
-        }
-        # loop.ini.time <- as.numeric(Sys.time())
-        for(i1 in 0:(loop.nb + 1)){
-            min.pos <- x.range[1] + step * i1 # lower position of the sliding window in data1
-            max.pos <- min.pos + x.win.size # upper position of the sliding window in data1
-            x.data1.l <- c(x.data1.l, min.pos, min.pos + step) # min.pos + step to make the steps
-            x.data1.r <- c(x.data1.r, max.pos, max.pos + step) # max.pos + step to make the steps
-            x.data1.dot.here <- data1[, x1] >= min.pos & data1[, x1] < max.pos # is there data1 dot present in the sliding window, considering the x axis?
-            if( ! is.null(data2)){
-                x.data2.dot.here <- data2[, x2] >= min.pos & data2[, x2] < max.pos # is there data2 dot present in the sliding window, considering the x axis?
-            }
-            # recover the data1 dots outside the frame
-            if(any(x.data1.dot.here == TRUE)){
-                tempo.y.data1.top.limit <- quantile(data1[x.data1.dot.here, y1], probs = 1 - error, na.rm = TRUE)
-                tempo.y.data1.down.limit <- quantile(data1[x.data1.dot.here, y1], probs = 0 + error, na.rm = TRUE)
-                y.data1.top.limit.l <- c(y.data1.top.limit.l, tempo.y.data1.top.limit, tempo.y.data1.top.limit)
-                y.data1.down.limit.l <- c(y.data1.down.limit.l, tempo.y.data1.down.limit, tempo.y.data1.down.limit)
-                y.data1.top.limit.r <- c(y.data1.top.limit.r, tempo.y.data1.top.limit, tempo.y.data1.top.limit)
-                y.data1.down.limit.r <- c(y.data1.down.limit.r, tempo.y.data1.down.limit, tempo.y.data1.down.limit)
-                y.data1.dot.signif <- ( ! ((data1[, y1] <= tempo.y.data1.top.limit) & (data1[, y1] >= tempo.y.data1.down.limit))) & x.data1.dot.here # is there data1 dot present in the sliding window, above or below the data1 limits, considering the y axis?
-                y.data1.dot.not.signif <- x.data1.dot.here & ! y.data1.dot.signif
-                y.outside.data1.dot.nb <- c(y.outside.data1.dot.nb, data1$DOT_NB[y.data1.dot.signif]) # recover the row number of data1
-                y.outside.data1.dot.nb <- unique(y.outside.data1.dot.nb)
-                y.inside.data1.dot.nb <- c(y.inside.data1.dot.nb, data1$DOT_NB[y.data1.dot.not.signif])
-                y.inside.data1.dot.nb <- unique(y.inside.data1.dot.nb)
-            }else{
-                y.data1.top.limit.l <- c(y.data1.top.limit.l, y.data1.median, y.data1.median)
-                y.data1.down.limit.l <- c(y.data1.down.limit.l, y.data1.median, y.data1.median)
-                y.data1.top.limit.r <- c(y.data1.top.limit.r, y.data1.median, y.data1.median)
-                y.data1.down.limit.r <- c(y.data1.down.limit.r, y.data1.median, y.data1.median)
-            }
-            # end recover the data1 dots outside the frame
-            # recover the data2 dots outside the frame
-            if( ! is.null(data2)){
-                if(any(x.data1.dot.here == TRUE) & any(x.data2.dot.here == TRUE)){ 
-                    y.data2.dot.signif <- ( ! ((data2[, y2] <= tempo.y.data1.top.limit) & (data2[, y2] >= tempo.y.data1.down.limit))) & x.data2.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the y axis?
-                    y.data2.dot.not.signif <- x.data2.dot.here & ! y.data2.dot.signif
-                    y.outside.data2.dot.nb <- c(y.outside.data2.dot.nb, data2$DOT_NB[y.data2.dot.signif])
-                    y.outside.data2.dot.nb <- unique(y.outside.data2.dot.nb)
-                    y.inside.data2.dot.nb <- c(y.inside.data2.dot.nb, data2$DOT_NB[y.data2.dot.not.signif])
-                    y.inside.data2.dot.nb <- unique(y.inside.data2.dot.nb)
-                }else if(any(x.data1.dot.here == FALSE) & any(x.data2.dot.here == TRUE)){ # problem: data2 dots in the the windows but no data1 dots to generates the quantiles
-                    y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[x.data2.dot.here])
-                    y.unknown.data2.dot.nb <- unique(y.unknown.data2.dot.nb)
-                    #tempo.warning & indicate the interval
-                    
-                    
-                    
-                    
-                    # tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE [", round(min.pos, 3), " ; ", round(max.pos, 3), "] INTERVAL DOES NOT CONTAIN data1 X VALUES BUT CONTAINS data2 X VALUES WHICH CANNOT BE EVALUATED.\nTHE CONCERNED data2 ROW NUMBERS ARE:\n", paste(which(x.data1.dot.here == FALSE & x.data2.dot.here == TRUE), collapse = "\n"))
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }
-            }
-            # end recover the data2 dots outside the frame
-            # if(any(i1 == seq(1, loop.nb, 500))){
-            # loop.fin.time <- as.numeric(Sys.time()) # time of process end
-            # cat(paste0("COMPUTATION TIME OF LOOP ", i1, " / ", loop.nb, ": ", as.character(lubridate::seconds_to_period(round(loop.fin.time - loop.ini.time))), "\n"))
-            # }
-        }
-        if(max.pos < x.range[2]){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE SLIDING WINDOW HAS NOT REACHED THE MAX VALUE OF data1 ON THE X-AXIS: ", max.pos, " VERSUS ", x.range[2], "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        y.incon.data1.dot.nb.final <- unique(c(y.outside.data1.dot.nb[y.outside.data1.dot.nb %in% y.inside.data1.dot.nb], y.inside.data1.dot.nb[y.inside.data1.dot.nb %in% y.outside.data1.dot.nb])) # inconsistent dots: if a row number of y.inside.data1.dot.nb is present in y.outside.data1.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
-        y.outside.data1.dot.nb.final <- y.outside.data1.dot.nb[ ! (y.outside.data1.dot.nb %in% y.incon.data1.dot.nb.final)] # inconsistent dots removed from the outside list
-        y.inside.data1.dot.nb.final <- y.inside.data1.dot.nb[ ! (y.inside.data1.dot.nb %in% y.incon.data1.dot.nb.final)] # inconsistent dots removed from the inside list
-        if( ! is.null(data2)){
-            # if some unknown dots are also inside, and/or outside, they are put in the inside and/or outside. Ok, because then the intersection between inside and outside is treated -> inconsistent dots
-            tempo.unknown.out <- y.unknown.data2.dot.nb[y.unknown.data2.dot.nb %in% y.outside.data2.dot.nb]
-            y.outside.data2.dot.nb <- unique(c(y.outside.data2.dot.nb, tempo.unknown.out)) # if a row number of y.unknown.data2.dot.nb is present in y.outside.data2.dot.nb, it is put into outside
-            tempo.unknown.in <- y.unknown.data2.dot.nb[y.unknown.data2.dot.nb %in% y.inside.data2.dot.nb]
-            y.inside.data2.dot.nb <- unique(c(y.inside.data2.dot.nb, tempo.unknown.in)) # if a row number of y.unknown.data2.dot.nb is present in y.inside.data2.dot.nb, it is put into inside
-            y.unknown.data2.dot.nb.final <- y.unknown.data2.dot.nb[ ! (y.unknown.data2.dot.nb %in% c(y.outside.data2.dot.nb, y.inside.data2.dot.nb))] # then dots also in inside and outside are remove from unknown
-            y.incon.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb[y.outside.data2.dot.nb %in% y.inside.data2.dot.nb], y.inside.data2.dot.nb[y.inside.data2.dot.nb %in% y.outside.data2.dot.nb])) # inconsistent dots: if a row number of y.inside.data2.dot.nb is present in y.outside.data2.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
-            y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb[ ! (y.outside.data2.dot.nb %in% y.incon.data2.dot.nb.final)] # inconsistent dots removed from the outside list
-            y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb[ ! (y.inside.data2.dot.nb %in% y.incon.data2.dot.nb.final)] # inconsistent dots removed from the inside list
-        }
-        # end x-axis sliding and y-axis limits of the data1 cloud -> y significant data2
-    }
-    # end Method using x unit interval 
-    
-    
-    
-    
-    # Method using y unit interval 
-    y.data1.d <- NULL # y coord of the x upper and lower limits defined on the data1 cloud for down step line
-    y.data1.t <- NULL # y coord of the x upper and lower limits defined on the data1 cloud for top step line
-    x.data1.left.limit.d <- NULL # left limit of the data1 cloud for down step line
-    x.data1.right.limit.d <- NULL # right limit of the data1 cloud for down step line
-    x.data1.left.limit.t <- NULL # left limit of the data1 cloud for top step line
-    x.data1.right.limit.t <- NULL # right limit of the data1 cloud for top step line
-    if( ! is.null(y.range.split)){
-        # data.frame ordering to slide the window from small to big values + sliding window definition
-        data1 <- data1[order(data1[, y1], na.last = TRUE), ]
-        if( ! is.null(data2)){
-            data2 <- data2[order(data2[, y2], na.last = TRUE), ]
-        }
-        y.win.size <- abs(diff(y.range) / y.range.split) # in unit of y-axis
-        step <- y.win.size / y.step.factor
-        # end data.frame ordering to slide the window from small to big values + sliding window definition
-        # y-axis sliding and x-axis limits of the data1 cloud -> x significant data2
-        loop.nb <- ceiling((diff(y.range) - y.win.size) / step) # y.win.size + n * step covers the y range if y.win.size + n * step >= diff(y.range), thus if n >= (diff(y.range) - y.win.size) / step 
-        x.outside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are upper or lower than the frame
-        x.inside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are not upper or lower than the frame
-        x.data1.median <- median(data1[, x1], na.rm = TRUE) # will be used for sliding windows without data1 in it
-        if( ! is.null(data2)){
-            x.outside.data2.dot.nb <- integer() # vector that will contain the selected 1D coordinates (i.e., dots) of data2 that are upper or lower than the data1 frame
-            x.inside.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are not upper or lower than the data1 frame
-            x.unknown.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are problematic: data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots
-            # recover data2 dots outside the range of data1
-            if(any(data2[, y2] < y.range[1])){
-                x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[data2[, y2] < y.range[1]])
-            }
-            if(any(data2[, y2] > y.range[2])){
-                x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[data2[, y2] > y.range[2]])
-            }
-            # end recover data2 dots outside the range of data1
-        }
-        # loop.ini.time <- as.numeric(Sys.time())
-        for(i1 in 0:(loop.nb + 1)){
-            min.pos <- y.range[1] + step * i1 # lower position of the sliding window in data1
-            max.pos <- min.pos + y.win.size # upper position of the sliding window in data1
-            y.data1.d <- c(y.data1.d, min.pos, min.pos + step) # min.pos + step to make the steps
-            y.data1.t <- c(y.data1.t, max.pos, max.pos + step) # max.pos + step to make the steps
-            y.data1.dot.here <- data1[, y1] >= min.pos & data1[, y1] < max.pos # is there data1 dot present in the sliding window, considering the y axis?
-            if( ! is.null(data2)){
-                y.data2.dot.here <- data2[, y2] >= min.pos & data2[, y2] < max.pos # is there data2 dot present in the sliding window, considering the y axis?
-            }
-            # recover the data1 dots outside the frame
-            if(any(y.data1.dot.here == TRUE)){
-                tempo.x.data1.right.limit <- quantile(data1[y.data1.dot.here, x1], probs = 1 - error, na.rm = TRUE)
-                tempo.x.data1.left.limit <- quantile(data1[y.data1.dot.here, x1], probs = 0 + error, na.rm = TRUE)
-                x.data1.right.limit.d <- c(x.data1.right.limit.d, tempo.x.data1.right.limit, tempo.x.data1.right.limit)
-                x.data1.left.limit.d <- c(x.data1.left.limit.d, tempo.x.data1.left.limit, tempo.x.data1.left.limit)
-                x.data1.right.limit.t <- c(x.data1.right.limit.t, tempo.x.data1.right.limit, tempo.x.data1.right.limit)
-                x.data1.left.limit.t <- c(x.data1.left.limit.t, tempo.x.data1.left.limit, tempo.x.data1.left.limit)
-                x.data1.dot.signif <- ( ! ((data1[, x1] <= tempo.x.data1.right.limit) & (data1[, x1] >= tempo.x.data1.left.limit))) & y.data1.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the x axis?
-                x.data1.dot.not.signif <- y.data1.dot.here & ! x.data1.dot.signif
-                x.outside.data1.dot.nb <- c(x.outside.data1.dot.nb, data1$DOT_NB[x.data1.dot.signif]) # recover the row number of data1
-                x.outside.data1.dot.nb <- unique(x.outside.data1.dot.nb)
-                x.inside.data1.dot.nb <- c(x.inside.data1.dot.nb, data1$DOT_NB[x.data1.dot.not.signif])
-                x.inside.data1.dot.nb <- unique(x.inside.data1.dot.nb)
-            }else{
-                x.data1.right.limit.d <- c(x.data1.right.limit.d, x.data1.median, x.data1.median)
-                x.data1.left.limit.d <- c(x.data1.left.limit.d, x.data1.median, x.data1.median)
-                x.data1.right.limit.t <- c(x.data1.right.limit.t, x.data1.median, x.data1.median)
-                x.data1.left.limit.t <- c(x.data1.left.limit.t, x.data1.median, x.data1.median)
-            }
-            # end recover the data1 dots outside the frame
-            # recover the data2 dots outside the frame
-            if( ! is.null(data2)){
-                if(any(y.data1.dot.here == TRUE) & any(y.data2.dot.here == TRUE)){ 
-                    x.data2.dot.signif <- ( ! ((data2[, x2] <= tempo.x.data1.right.limit) & (data2[, x2] >= tempo.x.data1.left.limit))) & y.data2.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the x axis?
-                    x.data2.dot.not.signif <- y.data2.dot.here & ! x.data2.dot.signif
-                    x.outside.data2.dot.nb <- c(x.outside.data2.dot.nb, data2$DOT_NB[x.data2.dot.signif])
-                    x.outside.data2.dot.nb <- unique(x.outside.data2.dot.nb)
-                    x.inside.data2.dot.nb <- c(x.inside.data2.dot.nb, data2$DOT_NB[x.data2.dot.not.signif])
-                    x.inside.data2.dot.nb <- unique(x.inside.data2.dot.nb)
-                }else if(any(y.data1.dot.here == FALSE) & any(y.data2.dot.here == TRUE)){ # recover the data2 dots outside the range of the data1 cloud
-                    x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[y.data2.dot.here])
-                    x.unknown.data2.dot.nb <- unique(x.unknown.data2.dot.nb)
-                    
-                    
-                    
-                    # tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE [", round(min.pos, 3), " ; ", round(max.pos, 3), "] INTERVAL DOES NOT CONTAIN data1 Y VALUES BUT CONTAINS data2 Y VALUES WHICH CANNOT BE EVALUATED.\nTHE CONCERNED data2 ROW NUMBERS ARE:\n", paste(which(y.data1.dot.here == FALSE & y.data2.dot.here == TRUE), collapse = "\n"))
-                    warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
-                }
-            }
-            # end recover the data2 dots outside the frame
-            # if(any(i1 == seq(1, loop.nb, 500))){
-            # loop.fin.time <- as.numeric(Sys.time()) # time of process end
-            # cat(paste0("COMPUTATION TIME OF LOOP ", i1, " / ", loop.nb, ": ", as.character(lubridate::seconds_to_period(round(loop.fin.time - loop.ini.time))), "\n"))
-            # }
-        }
-        if(max.pos < y.range[2]){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE SLIDING WINDOW HAS NOT REACHED THE MAX VALUE OF data1 ON THE Y-AXIS: ", max.pos, " VERSUS ", y.range[2], "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-        x.incon.data1.dot.nb.final <- unique(c(x.outside.data1.dot.nb[x.outside.data1.dot.nb %in% x.inside.data1.dot.nb], x.inside.data1.dot.nb[x.inside.data1.dot.nb %in% x.outside.data1.dot.nb])) # inconsistent dots: if a row number of x.inside.data1.dot.nb is present in x.outside.data1.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
-        x.outside.data1.dot.nb.final <- x.outside.data1.dot.nb[ ! (x.outside.data1.dot.nb %in% x.incon.data1.dot.nb.final)] # inconsistent dots removed from the outside list
-        x.inside.data1.dot.nb.final <- x.inside.data1.dot.nb[ ! (x.inside.data1.dot.nb %in% x.incon.data1.dot.nb.final)] # inconsistent dots removed from the inside list
-        if( ! is.null(data2)){
-            # if some unknown dots are also inside, and/or outside, they are put in the inside and/or outside. Ok, because then the intersection between inside and outside is treated -> inconsistent dots
-            tempo.unknown.out <- x.unknown.data2.dot.nb[x.unknown.data2.dot.nb %in% x.outside.data2.dot.nb]
-            x.outside.data2.dot.nb <- unique(c(x.outside.data2.dot.nb, tempo.unknown.out)) # if a row number of x.unknown.data2.dot.nb is present in x.outside.data2.dot.nb, it is put into outside
-            tempo.unknown.in <- x.unknown.data2.dot.nb[x.unknown.data2.dot.nb %in% x.inside.data2.dot.nb]
-            x.inside.data2.dot.nb <- unique(c(x.inside.data2.dot.nb, tempo.unknown.in)) # if a row number of x.unknown.data2.dot.nb is present in x.inside.data2.dot.nb, it is put into inside
-            x.unknown.data2.dot.nb.final <- x.unknown.data2.dot.nb[ ! (x.unknown.data2.dot.nb %in% c(x.outside.data2.dot.nb, x.inside.data2.dot.nb))] # then dots also in inside and outside are remove from unknown
-            x.incon.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb[x.outside.data2.dot.nb %in% x.inside.data2.dot.nb], x.inside.data2.dot.nb[x.inside.data2.dot.nb %in% x.outside.data2.dot.nb])) # inconsistent dots: if a row number of x.inside.data2.dot.nb is present in x.outside.data2.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
-            x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb[ ! (x.outside.data2.dot.nb %in% x.incon.data2.dot.nb.final)] # inconsistent dots removed from the outside list
-            x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb[ ! (x.inside.data2.dot.nb %in% x.incon.data2.dot.nb.final)] # inconsistent dots removed from the inside list
-        }
-        # end y-axis sliding and x-axis limits of the data1 cloud -> x significant data2
-    }
-    # end Method using y unit interval 
-    
-    
-    
-    # recovering the frame coordinates
-    hframe = rbind(
-        data.frame(
-            x = if(is.null(x.data1.l)){NULL}else{x.data1.l}, 
-            y = if(is.null(x.data1.l)){NULL}else{y.data1.down.limit.l}, 
-            kind = if(is.null(x.data1.l)){NULL}else{"down.frame1"}
-        ), 
-        data.frame(
-            x = if(is.null(x.data1.r)){NULL}else{x.data1.r}, 
-            y = if(is.null(x.data1.r)){NULL}else{y.data1.down.limit.r}, 
-            kind = if(is.null(x.data1.r)){NULL}else{"down.frame2"}
-        ), 
-        data.frame(
-            x = if(is.null(x.data1.l)){NULL}else{x.data1.l}, 
-            y = if(is.null(x.data1.l)){NULL}else{y.data1.top.limit.l}, 
-            kind = if(is.null(x.data1.l)){NULL}else{"top.frame1"}
-        ), 
-        data.frame(
-            x = if(is.null(x.data1.r)){NULL}else{x.data1.r}, 
-            y = if(is.null(x.data1.r)){NULL}else{y.data1.top.limit.r}, 
-            kind = if(is.null(x.data1.r)){NULL}else{"top.frame2"}
-        )
-    )
-    vframe = rbind(
-        data.frame(
-            x = if(is.null(y.data1.d)){NULL}else{x.data1.left.limit.d}, 
-            y = if(is.null(y.data1.d)){NULL}else{y.data1.d}, 
-            kind = if(is.null(y.data1.d)){NULL}else{"left.frame1"}
-        ), 
-        data.frame(
-            x = if(is.null(y.data1.t)){NULL}else{x.data1.left.limit.t}, 
-            y = if(is.null(y.data1.t)){NULL}else{y.data1.t}, 
-            kind = if(is.null(y.data1.t)){NULL}else{"left.frame2"}
-        ), 
-        data.frame(
-            x = if(is.null(y.data1.d)){NULL}else{x.data1.right.limit.d}, 
-            y = if(is.null(y.data1.d)){NULL}else{y.data1.d}, 
-            kind = if(is.null(y.data1.d)){NULL}else{"right.frame1"}
-        ),
-        data.frame(
-            x = if(is.null(y.data1.t)){NULL}else{x.data1.right.limit.t}, 
-            y = if(is.null(y.data1.t)){NULL}else{y.data1.t}, 
-            kind = if(is.null(y.data1.t)){NULL}else{"right.frame2"}
-        )
-    )
-    # end recovering the frame coordinates
-    # recovering the dot coordinates
-    data1.signif.dot <- NULL
-    data1.non.signif.dot <- NULL
-    data1.incon.dot <- NULL
-    data2.signif.dot <- NULL
-    data2.non.signif.dot <- NULL
-    data2.unknown.dot <- NULL
-    data2.incon.dot <- NULL
-    if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
-        # inconsistent dots recovery 
-        if(length(unique(c(x.incon.data1.dot.nb.final, y.incon.data1.dot.nb.final))) > 0){
-            data1.incon.dot <- data1[data1$DOT_NB %in% unique(c(x.incon.data1.dot.nb.final, y.incon.data1.dot.nb.final)), ] # if a dot in inconsistent in x or y -> classified as inconsistent (so unique() used)
-            # removal of the inconsistent dot in the other classifications
-            x.inside.data1.dot.nb.final <- x.inside.data1.dot.nb.final[ ! x.inside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            y.inside.data1.dot.nb.final <- y.inside.data1.dot.nb.final[ ! y.inside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            x.outside.data1.dot.nb.final <- x.outside.data1.dot.nb.final[ ! x.outside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            y.outside.data1.dot.nb.final <- y.outside.data1.dot.nb.final[ ! y.outside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            x.unknown.data1.dot.nb.final <- x.unknown.data1.dot.nb.final[ ! x.unknown.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            y.unknown.data1.dot.nb.final <- y.unknown.data1.dot.nb.final[ ! y.unknown.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
-            # end removal of the inconsistent dot in the other classifications
-        }
-        if( ! is.null(data2)){
-            if(length(unique(c(x.incon.data2.dot.nb.final, y.incon.data2.dot.nb.final))) > 0){
-                data2.incon.dot <- data2[data2$DOT_NB %in% unique(c(x.incon.data2.dot.nb.final, y.incon.data2.dot.nb.final)), ]
-                # removal of the inconsistent dot in the other classifications
-                x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                x.unknown.data2.dot.nb.final <- x.unknown.data2.dot.nb.final[ ! x.unknown.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                y.unknown.data2.dot.nb.final <- y.unknown.data2.dot.nb.final[ ! y.unknown.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
-                # end removal of the inconsistent dot in the other classifications
-            }
-        }
-        # end inconsistent dots recovery 
-        # unknown dots recovery 
-        if( ! is.null(data2)){
-            if(data2.pb.dot == "signif"){
-                x.outside.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
-                x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% x.unknown.data2.dot.nb.final] # remove x.unknown.data2.dot.nb.final from x.inside.data2.dot.nb.final
-                y.outside.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
-                y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% y.unknown.data2.dot.nb.final] # remove y.unknown.data2.dot.nb.final from y.inside.data2.dot.nb.final
-                x.unknown.data2.dot.nb.final <- NULL
-                y.unknown.data2.dot.nb.final <- NULL
-                data2.unknown.dot <- NULL
-            }else if(data2.pb.dot == "not.signif"){
-                x.inside.data2.dot.nb.final <- unique(c(x.inside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
-                x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% x.unknown.data2.dot.nb.final] # remove x.unknown.data2.dot.nb.final from x.outside.data2.dot.nb.final
-                y.inside.data2.dot.nb.final <- unique(c(y.inside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
-                y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% y.unknown.data2.dot.nb.final] # remove y.unknown.data2.dot.nb.final from y.outside.data2.dot.nb.final
-                x.unknown.data2.dot.nb.final <- NULL
-                y.unknown.data2.dot.nb.final <- NULL
-                data2.unknown.dot <- NULL
-            }else if(data2.pb.dot == "unknown"){
-                if(length(unique(c(x.unknown.data2.dot.nb.final, y.unknown.data2.dot.nb.final))) > 0){
-                    data2.unknown.dot <- data2[data2$DOT_NB %in% unique(c(x.unknown.data2.dot.nb.final, y.unknown.data2.dot.nb.final)), ] # if a dot in unknown in x or y -> classified as unknown (so unique() used)
-                    x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove x.unknown.data2.dot.nb.final from x.outside.data2.dot.nb.final
-                    x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove x.unknown.data2.dot.nb.final from x.inside.data2.dot.nb.final
-                    y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove y.unknown.data2.dot.nb.final from y.outside.data2.dot.nb.final
-                    y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove y.unknown.data2.dot.nb.final from y.inside.data2.dot.nb.final
-                }
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-        }
-        # end unknown dots recovery 
-        # sign and non sign dot recovery
-        if(xy.cross.kind == "|"){ # here the problem is to deal with significant dots depending on x and y. Thus I start with that, recover dots finally non significant in outside and put them in inside (when &), and remove from inside the dots in outside
-            if(length(unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final))) > 0){
-                tempo.outside <- unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final)) # union so unique() used
-                tempo.inside <- unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final))
-                tempo.inside <- tempo.inside[ ! tempo.inside %in% tempo.outside]
-                data1.signif.dot <- data1[data1$DOT_NB %in% tempo.outside, ]
-                data1.non.signif.dot <- data1[data1$DOT_NB %in% tempo.inside, ]
-            }else{
-                data1.non.signif.dot <- data1[unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
-            }
-        }else if(xy.cross.kind == "&"){
-            if(sum(x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final) > 0){ # that is intersection
-                tempo.outside <- unique(x.outside.data1.dot.nb.final[x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final]) # intersection
-                tempo.outside.removed <- unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final))[ ! unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final)) %in% tempo.outside]
-                tempo.inside <- unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final))
-                data1.signif.dot <- data1[data1$DOT_NB %in% tempo.outside, ]
-                data1.non.signif.dot <- data1[data1$DOT_NB %in% tempo.inside, ]
-            }else{
-                data1.non.signif.dot <- data1[unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
-            }
-        }else{
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if( ! is.null(data2)){
-            if(xy.cross.kind == "|"){ # here the problem is to deal with significant dots depending on x and y. Thus I start with that, recover dots finally non significant in outside and put them in inside (when &), and remove from inside the dots in outside
-                if(length(unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final))) > 0){
-                    tempo.outside <- unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final)) # union so unique() used
-                    tempo.inside <- unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final))
-                    tempo.inside <- tempo.inside[ ! tempo.inside %in% tempo.outside]
-                    data2.signif.dot <- data2[data2$DOT_NB %in% tempo.outside, ]
-                    data2.non.signif.dot <- data2[data2$DOT_NB %in% tempo.inside, ]
-                }else{
-                    data2.non.signif.dot <- data2[unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
-                }
-            }else if(xy.cross.kind == "&"){
-                if(sum(x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final) > 0){ # that is intersection
-                    tempo.outside <- unique(x.outside.data2.dot.nb.final[x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final]) # intersection
-                    tempo.outside.removed <- unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final))[ ! unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final)) %in% tempo.outside]
-                    tempo.inside <- unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final))
-                    data2.signif.dot <- data2[data2$DOT_NB %in% tempo.outside, ]
-                    data2.non.signif.dot <- data2[data2$DOT_NB %in% tempo.inside, ]
-                }else{
-                    data2.non.signif.dot <- data2[unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
-                }
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-        }
-        # end sign and non sign dot recovery
-    }else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
-        # inconsistent dots recovery 
-        if(length(y.incon.data1.dot.nb.final) > 0){
-            data1.incon.dot <- data1[data1$DOT_NB %in% y.incon.data1.dot.nb.final, ]
-        }
-        if( ! is.null(data2)){
-            if(length(y.incon.data2.dot.nb.final) > 0){
-                data2.incon.dot <- data2[data2$DOT_NB %in% y.incon.data2.dot.nb.final, ]
-            }
-        }# end inconsistent dots recovery 
-        # unknown dots recovery 
-        if( ! is.null(data2)){
-            if(data2.pb.dot == "signif"){
-                y.outside.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
-            }else if(data2.pb.dot == "not.signif"){
-                y.inside.data2.dot.nb.final <- unique(c(y.inside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
-            }else if(data2.pb.dot == "unknown"){
-                if(length(y.unknown.data2.dot.nb.final) > 0){
-                    data2.unknown.dot <- data2[data2$DOT_NB %in% y.unknown.data2.dot.nb.final, ]
-                }
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-        }
-        # end unknown dots recovery 
-        # sign and non sign dot recovery
-        if(length(y.outside.data1.dot.nb.final) > 0){
-            data1.signif.dot <- data1[data1$DOT_NB %in% y.outside.data1.dot.nb.final, ]
-        }
-        if(length(y.inside.data1.dot.nb.final) > 0){
-            data1.non.signif.dot <- data1[data1$DOT_NB %in% y.inside.data1.dot.nb.final, ]
-        }
-        if( ! is.null(data2)){
-            if(length(y.outside.data2.dot.nb.final) > 0){
-                data2.signif.dot <- data2[data2$DOT_NB %in% y.outside.data2.dot.nb.final, ]
-            }
-            if(length(y.inside.data2.dot.nb.final) > 0){
-                data2.non.signif.dot <- data2[data2$DOT_NB %in% y.inside.data2.dot.nb.final, ]
-            }
-        }
-        # end sign and non sign dot recovery
-    }else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
-        # inconsistent dots recovery 
-        if(length(x.incon.data1.dot.nb.final) > 0){
-            data1.incon.dot <- data1[data1$DOT_NB %in% x.incon.data1.dot.nb.final, ]
-        }
-        if( ! is.null(data2)){
-            if(length(x.incon.data2.dot.nb.final) > 0){
-                data2.incon.dot <- data2[data2$DOT_NB %in% x.incon.data2.dot.nb.final, ]
-            }
-        }# end inconsistent dots recovery 
-        # unknown dots recovery 
-        if( ! is.null(data2)){
-            if(data2.pb.dot == "signif"){
-                x.outside.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
-            }else if(data2.pb.dot == "not.signif"){
-                x.inside.data2.dot.nb.final <- unique(c(x.inside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
-            }else if(data2.pb.dot == "unknown"){
-                if(length(x.unknown.data2.dot.nb.final) > 0){
-                    data2.unknown.dot <- data2[data2$DOT_NB %in% x.unknown.data2.dot.nb.final, ]
-                }
-            }else{
-                tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n"))
-                stop(tempo.cat)
-            }
-        }
-        # end unknown dots recovery 
-        # sign and non sign dot recovery
-        if(length(x.outside.data1.dot.nb.final) > 0){
-            data1.signif.dot <- data1[data1$DOT_NB %in% x.outside.data1.dot.nb.final, ]
-        }
-        if(length(x.inside.data1.dot.nb.final) > 0){
-            data1.non.signif.dot <- data1[data1$DOT_NB %in% x.inside.data1.dot.nb.final, ]
-        }
-        if( ! is.null(data2)){
-            if(length(x.outside.data2.dot.nb.final) > 0){
-                data2.signif.dot <- data2[data2$DOT_NB %in% x.outside.data2.dot.nb.final, ]
-            }
-            if(length(x.inside.data2.dot.nb.final) > 0){
-                data2.non.signif.dot <- data2[data2$DOT_NB %in% x.inside.data2.dot.nb.final, ]
-            }
-        }
-        # end sign and non sign dot recovery
-    }
-    # end recovering the dot coordinates
-    # verif
-    if(any(data1.signif.dot$DOT_NB %in% data1.non.signif.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", FUNCTION.NAME, ": CODE INCONSISTENCY 8\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(any(data1.non.signif.dot$DOT_NB %in% data1.signif.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", FUNCTION.NAME, ": CODE INCONSISTENCY 9\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(any(data1.signif.dot$DOT_NB %in% data1.incon.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(any(data1.incon.dot$DOT_NB %in% data1.signif.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(any(data1.non.signif.dot$DOT_NB %in% data1.incon.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 12\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if(any(data1.incon.dot$DOT_NB %in% data1.non.signif.dot$DOT_NB)){
-        tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 13\n\n============\n\n"))
-        stop(tempo.cat)
-    }
-    if( ! is.null(data2)){
-        if(any(data2.signif.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 14\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.non.signif.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 15\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.signif.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 16\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.unknown.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 17\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.signif.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 18\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.incon.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 19\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.non.signif.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 20\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.unknown.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 21\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.non.signif.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 22\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.incon.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 23\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.unknown.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 24\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-        if(any(data2.incon.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
-            tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 25\n\n============\n\n"))
-            stop(tempo.cat)
-        }
-    }
-    # end verif
-    # plot
-    # recovering the axes data whatever plot or not
-    if(is.null(data2)){
-        axes <- fun_gg_scatter(data1 = list(data1), x = list(x1), y = list(y1), categ = list(NULL), color = list(fun_gg_palette(2)[2]), geom = list("geom_point"), alpha = list(0.5), xlim = x.range.plot, ylim = y.range.plot, raster = raster, plot = FALSE, return = TRUE)$axes
-    }else{
-        axes <- fun_gg_scatter(data1 = list(data1, data2), x = list(x1, x2), y = list(y1, y2), categ = list(NULL, NULL), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1]), geom = list("geom_point", "geom_point"), alpha = list(0.5, 0.5), xlim = x.range.plot, ylim = y.range.plot, raster = raster, plot = FALSE, return = TRUE)$axes
-    }
-    # end recovering the axes data whatever plot or not
-    if(plot == TRUE){
-        # add a categ for plot legend
-        tempo.df.name <- c("data1", "data1.signif.dot", "data1.incon.dot", "data2", "data2.signif.dot", "data2.unknown.dot", "data2.incon.dot")
-        tempo.class.name <- c("data1", "data1", "data1", "data2", "data2", "data2", "data2")
-        for(i2 in 1:length(tempo.df.name)){
-            if( ! is.null(get(tempo.df.name[i2]))){
-                assign(tempo.df.name[i2], data.frame(get(tempo.df.name[i2]), kind = tempo.class.name[i2]))
-            }
-        }
-        # end add a categ for plot legend
-        if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
-            if(graph.in.file == FALSE){
-                fun_open(pdf.disp = FALSE)
-            }
-            tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe), x = list(x1, "x", "x"), y = list(y1, "y", "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-            if( ! is.null(tempo.graph$warnings)){
-                warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-            }
-            if( ! is.null(data1.signif.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe, data1.signif.dot), x = list(x1, "x", "x", x1), y = list(y1, "y", "y", y1), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
-            }
-            if( ! is.null(data1.incon.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe, data1.incon.dot), x = list(x1, "x", "x", x1), y = list(y1, "y", "y", y1), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
-            }
-            if( ! is.null(data2)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, hframe , vframe), x = list(x1, x2, "x", "x"), y = list(y1, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-                if( ! is.null(data2.signif.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
-                }
-                if( ! is.null(data2.incon.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
-                }
-                if( ! is.null(data2.unknown.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 12, title = "DATA2 + DATA2 UNKNOWN DOTS")
-                }
-            }
-        }else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
-            if(graph.in.file == FALSE){
-                fun_open(pdf.disp = FALSE)
-            }
-            tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe), x = list(x1, "x"), y = list(y1, "y"), categ = list("kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_path"), alpha = list(0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-            if( ! is.null(tempo.graph$warnings)){
-                warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-            }
-            if( ! is.null(data1.signif.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
-            }
-            if( ! is.null(data1.incon.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, data1.incon.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
-            }
-            if( ! is.null(data2)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, hframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-                if( ! is.null(data2.signif.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
-                }
-                if( ! is.null(data2.incon.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
-                }
-                if( ! is.null(data2.unknown.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 8, title = "DATA2 + DATA2 UNKNOWN DOTS")
-                }
-            }
-        }else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
-            if(graph.in.file == FALSE){
-                fun_open(pdf.disp = FALSE)
-            }
-            tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe), x = list(x1, "x"), y = list(y1, "y"), categ = list("kind", "kind"), legend.name = list("DATASET", "VERT FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_path"), alpha = list(0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-            if( ! is.null(tempo.graph$warnings)){
-                warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-            }
-            if( ! is.null(data1.signif.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "VERT FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
-            }
-            if( ! is.null(data1.incon.dot)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe, data1.incon.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "VERT FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-            }else{
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
-            }
-            if( ! is.null(data2)){
-                if(graph.in.file == FALSE){
-                    fun_open(pdf.disp = FALSE)
-                }
-                tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, vframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                if( ! is.null(tempo.graph$warnings)){
-                    warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                }
-                if( ! is.null(data2.signif.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
-                }
-                if( ! is.null(data2.incon.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
-                }
-                if( ! is.null(data2.unknown.dot)){
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
-                    if( ! is.null(tempo.graph$warnings)){
-                        warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
-                    }
-                }else{
-                    if(graph.in.file == FALSE){
-                        fun_open(pdf.disp = FALSE)
-                    }
-                    fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 8, title = "DATA2 + DATA2 UNKNOWN DOTS")
-                }
-            }
-        }
-    }
-    # end plot
-    if(warn.print == TRUE & ! is.null(warning)){
-        warning(warning)
-    }
-    tempo.list <- list(data1.removed.row.nb = data1.removed.row.nb, data1.removed.rows = data1.removed.rows, data2.removed.row.nb = data2.removed.row.nb, data2.removed.rows = data2.removed.rows, hframe = hframe, vframe = vframe, data1.signif.dot = data1.signif.dot, data1.non.signif.dot = data1.non.signif.dot, data1.inconsistent.dot = data1.incon.dot, data2.signif.dot = data2.signif.dot, data2.non.signif.dot = data2.non.signif.dot, data2.unknown.dot = data2.unknown.dot, data2.inconsistent.dot = data2.incon.dot, axes = axes, warnings = warning)
-    return(tempo.list)
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = angle, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = axis, options = c("x", "y"), length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+# to get angle between -360 and 360
+while(angle > 360){
+angle <- angle - 360
+}
+while(angle < -360){
+angle <- angle + 360
+}
+# end to get angle between -360 and 360
+# justifications
+if(axis == "x"){
+if(angle == -360 | angle == -180 | angle == 0 | angle == 180 | angle == 360){
+hjust <- 0.5
+vjust <- 0.5
+}else if(angle == -270 | angle == 90){
+hjust <- 1
+vjust <- 0.5
+}else if(angle == -90 | angle == 270){
+hjust <- 0
+vjust <- 0.5
+}else if((angle > -360 & angle < -270) | (angle > 0 & angle < 90)){
+hjust <- 1
+vjust <- 1
+}else if((angle > -270 & angle < -180) | (angle > 90 & angle < 180)){
+hjust <- 1
+vjust <- 0
+}else if((angle > -180 & angle < -90) | (angle > 180 & angle < 270)){
+hjust <- 0
+vjust <- 0
+}else if((angle > -90 & angle < 0) | (angle > 270 & angle < 360)){
+hjust <- 0
+vjust <- 1
+}
+}else if(axis == "y"){
+if(angle == -270 | angle == -90 | angle == 90 | angle == 270){
+hjust <- 0.5
+vjust <- 0.5
+}else if(angle == -360 | angle == 0 | angle == 360){
+hjust <- 1
+vjust <- 0.5
+}else if(angle == -180 | angle == 180){
+hjust <- 0
+vjust <- 0.5
+}else if((angle > -360 & angle < -270) | (angle > 0 & angle < 90)){
+hjust <- 1
+vjust <- 0
+}else if((angle > -270 & angle < -180) | (angle > 90 & angle < 180)){
+hjust <- 0
+vjust <- 0
+}else if((angle > -180 & angle < -90) | (angle > 180 & angle < 270)){
+hjust <- 0
+vjust <- 1
+}else if((angle > -90 & angle < 0) | (angle > 270 & angle < 360)){
+hjust <- 1
+vjust <- 1
+}
+}
+# end justifications
+output <- list(angle = angle, hjust = hjust, vjust = vjust)
+return(output)
 }
 
 
-################ Import
+######## fun_gg_point_rast() #### ggplot2 raster scatterplot layer
 
 
-######## fun_pack() #### check if R packages are present and import into the working environment
+ 
 
 
 # Check OK: clear to go Apollo
-fun_pack <- function(req.package, load = FALSE, path.lib = NULL){
-    # AIM
-    # check if the specified R packages are present in the computer and import them into the working environment
-    # ARGUMENTS
-    # req.package: character vector of package names to import
-    # req.package: logical. Load the package into the environement (using library())?
-    # path.lib: optional character vector specifying the absolute pathways of the directories containing some of the listed packages
-    # REQUIRED PACKAGES
-    # none
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # RETURN
-    # nothing
-    # EXAMPLES
-    # fun_pack(req.package = "nopackage")
-    # fun_pack(req.package = "ggplot2")
-    # fun_pack(req.package = "ggplot2", path.lib = "blablabla")
-    # DEBUGGING
-    # req.package = "ggplot2" ; path.lib = "C:/Program Files/R/R-3.5.1/library"
-    # req.package = "serpentine" ; path.lib = "C:/users/gael/appdata/roaming/python/python36/site-packages"
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = req.package, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = load, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # main code
-    if(is.null(path.lib)){
-        path.lib <- .libPaths() # .libPaths(new = path.lib) # or .libPaths(new = c(.libPaths(), path.lib))
-    }else{
-        .libPaths(new = sub(x = path.lib, pattern = "/$|\\\\$", replacement = "")) # .libPaths(new = ) add path to default path. BEWARE: .libPaths() does not support / at the end of a submitted path. Thus check and replace last / or \\ in path
-    }
-    for(i0 in 1:length(req.package)){
-        if( ! req.package[i0] %in% rownames(installed.packages(lib.loc = path.lib))){
-            stop(paste0("\n\n================\n\nERROR IN ", function.name, ": PACKAGE ", req.package[i0], " MUST BE INSTALLED IN:\n", paste(path.lib, collapse = "\n"), "\n\n================\n\n"))
-        }else{
-            if(load == TRUE){
-                suppressWarnings(suppressPackageStartupMessages(library(req.package[i0], lib.loc = path.lib, quietly = TRUE, character.only = TRUE)))
-            }
-        }
-    }
+fun_gg_point_rast <- function(data = NULL, mapping = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE, raster.width = NULL, raster.height = NULL, raster.dpi = 300, inactivate = TRUE, path.lib = NULL){
+# AIM
+# equivalent to ggplot2::geom_point() but in raster mode
+# use it like ggplot2::geom_point() with the main raster.dpi additional argument
+# WARNINGS
+# can be long to generate the plot
+# use a square plot region. Otherwise, the dots will have ellipsoid shape
+# solve the transparency problems with some GUI
+# this function is derived from the geom_point_rast() function, created by VPetukhov, and present in the ggrastr package (https://rdrr.io/github/VPetukhov/ggrastr/src/R/geom-point-rast.R). Has been placed here to minimize package dependencies
+# ARGUMENTS
+# classical arguments of geom_point(), shown here https://rdrr.io/github/VPetukhov/ggrastr/man/geom_point_rast.html
+# raster.width : width of the result image (in inches). Default: deterined by the current device parameters
+# raster.height: height of the result image (in inches). Default: deterined by the current device parameters
+# raster.dpi: resolution of the result image
+# inactivate: logical. Inactivate the fun.name argument of the fun_check() function? If TRUE, the name of the fun_check() function in error messages coming from this function. Use TRUE if fun_gg_point_rast() is used like this: eval(parse(text = "fun_gg_point_rast"))
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# ggplot2
+# grid
+# Cairo
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_pack()
+# RETURN
+# a raster scatter plot
+# EXAMPLES
+# Two pdf in the current directory
+# set.seed(1) ; data1 = data.frame(x = rnorm(100000), y = rnorm(10000)) ; fun_open(pdf.name.file = "Raster") ; ggplot2::ggplot() + fun_gg_point_rast(data = data1, mapping = ggplot2::aes(x = x, y = y)) ; fun_open(pdf.name.file = "Vectorial") ; ggplot2::ggplot() + ggplot2::geom_point(data = data1, mapping = ggplot2::aes(x = x, y = y)) ; dev.off() ; dev.off()
+# DEBUGGING
+# 
+# function name
+if(all(inactivate == FALSE)){ # inactivate has to be used here but will be fully checked below
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+}else if(all(inactivate == TRUE)){
+function.name <- NULL
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN fun_gg_point_rast(): CODE INCONSISTENCY 1\n\n============\n\n"))
+stop(tempo.cat)
+}
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+if( ! is.null(data)){
+tempo <- fun_check(data = data, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(mapping)){
+tempo <- fun_check(data = mapping, class = "uneval", typeof = "list", fun.name = function.name) ; eval(ee) # aes() is tested
+}
+# stat and position not tested because too complicate
+tempo <- fun_check(data = na.rm, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = show.legend, class = "vector", mode = "logical", length = 1, na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = inherit.aes, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(raster.width)){
+tempo <- fun_check(data = raster.width, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(raster.height)){
+tempo <- fun_check(data = raster.height, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = raster.dpi, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = inactivate, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+fun_pack(req.package = c("grid"), path.lib = path.lib)
+fun_pack(req.package = c("Cairo"), path.lib = path.lib)
+# end package checking
+# additional functions
+DrawGeomPointRast <- function(data, panel_params, coord, na.rm = FALSE, raster.width = NULL, raster.height= NULL, raster.dpi = 300){
+if (is.null(raster.width)){
+raster.width <- par('fin')[1]
+}
+if (is.null(raster.height)){
+ raster.height <- par('fin')[2]
+}
+prev_dev_id <- dev.cur()
+p <- ggplot2::GeomPoint$draw_panel(data, panel_params, coord)
+dev_id <- Cairo::Cairo(type='raster', width = raster.width*raster.dpi, height = raster.height*raster.dpi, dpi = raster.dpi, units = 'px', bg = "transparent")[1]
+grid::pushViewport(grid::viewport(width = 1, height = 1))
+grid::grid.points(x = p$x, y = p$y, pch = p$pch, size = p$size,
+name = p$name, gp = p$gp, vp = p$vp, draw = T)
+grid::popViewport()
+cap <- grid::grid.cap()
+dev.off(dev_id)
+dev.set(prev_dev_id)
+grid::rasterGrob(cap, x = 0, y = 0, width = 1, height = 1, default.units = "native", just = c("left","bottom"))
+}
+# end additional functions
+# main code
+GeomPointRast <- ggplot2::ggproto("GeomPointRast", ggplot2::GeomPoint, draw_panel = DrawGeomPointRast)
+ggplot2::layer(
+data = data, 
+mapping = mapping, 
+stat = stat, 
+geom = GeomPointRast, 
+position = position, 
+show.legend = show.legend, 
+inherit.aes = inherit.aes, 
+params = list(
+na.rm = na.rm, 
+raster.width = raster.width, 
+raster.height = raster.height, 
+raster.dpi = raster.dpi, 
+...
+)
+)
+# end main code
 }
 
 
-######## fun_python_pack() #### check if python packages are present
+######## fun_gg_scatter() #### ggplot2 scatterplot + lines (up to 6 overlays totally)
 
 
 # Check OK: clear to go Apollo
-fun_python_pack <- function(req.package, path.lib = NULL, R.path.lib = NULL){
-    # AIM
-    # check if the specified python packages are present in the computer (no import)
-    # ARGUMENTS
-    # req.package: character vector of package names to import
-    # path.lib: optional character vector specifying the absolute pathways of the directories containing some of the listed packages in the req.package argument
-    # R.path.lib: absolute path of the reticulate packages, if not in the default folders
-    # REQUIRED PACKAGES
-    # reticulate
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # fun_pack()
-    # RETURN
-    # nothing
-    # EXAMPLES
-    # fun_python_pack(req.package = "nopackage")
-    # fun_python_pack(req.package = "serpentine", path.lib = "c:/programdata/anaconda3/lib/site-packages/")
-    # fun_python_pack(req.package = "serpentine", path.lib = "blablabla")
-    # DEBUGGING
-    # req.package = "serpentine" ; path.lib = "c:/programdata/anaconda3/lib/site-packages/" ; R.path.lib = NULL
-    # req.package = "bad" ; path.lib = NULL ; R.path.lib = NULL
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_pack", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = req.package, class = "character", fun.name = function.name) ; eval(ee)
-    if( ! is.null(path.lib)){
-        tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if( ! is.null(R.path.lib)){
-        tempo <- fun_check(data = R.path.lib, class = "character", fun.name = function.name) ; eval(ee)
-        if(tempo$problem == FALSE & ! all(dir.exists(R.path.lib))){
-            cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE R.path.lib PARAMETER DOES NOT EXISTS: ", R.path.lib, "\n\n============\n\n"))
-            arg.check <- c(arg.check, TRUE)
-        }
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # end argument checking
-    # package checking
-    fun_pack(req.package = "reticulate", path.lib = R.path.lib)
-    # end package checking
-    # main code
-    if(is.null(path.lib)){
-        path.lib <- reticulate::py_run_string("
-import sys ;
-path_lib = sys.path
-") # python string
-        path.lib <- path.lib$path_lib
-    }
-    for(i0 in 1:length(req.package)){
-        tempo.try <- vector("list", length = length(path.lib))
-        for(i1 in 1:length(path.lib)){
-            tempo.try[[i1]] <- suppressWarnings(try(reticulate::import_from_path(req.package[i0], path = path.lib[i1]), silent = TRUE))
-            tempo.try[[i1]] <- suppressWarnings(try(reticulate::import_from_path(req.package[i0], path = path.lib[i1]), silent = TRUE)) # done twice to avoid the error message  about flushing present the first time but not the second time. see https://stackoverflow.com/questions/57357001/reticulate-1-13-error-in-sysstdoutflush-attempt-to-apply-non-function
-        }
-        if(all(sapply(tempo.try, FUN = grepl, pattern = "[Ee]rror"))){
-            stop(paste0("\n\n================\n\nERROR IN ", function.name, ": PACKAGE ", req.package[i0], " MUST BE INSTALLED IN THE MENTIONNED DIRECTORY:\n", paste(path.lib, collapse = "\n"), "\n\n================\n\n"))
-        }else{
-            # suppressWarnings(suppressPackageStartupMessages(assign(req.package[i0], reticulate::import(req.package[i0])))) # not required because try() already evaluates
-        }
-    }
+fun_gg_scatter <- function(data1, x, y, categ = NULL, legend.name = NULL, color = NULL, geom = "geom_point", alpha = 0.5, dot.size = 2, line.size = 0.5, xlim = NULL, xlab = NULL, xlog = "no", x.tick.nb = NULL, x.inter.tick.nb = NULL, x.left.extra.margin = 0.05, x.right.extra.margin = 0.05, ylim = NULL, ylab = NULL, ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0.05, xy.include.zero = FALSE, text.size = 12, title = "", title.text.size = 12, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
+# AIM
+# ggplot2 scatterplot with the possibility to overlay dots from up to 3 different data frames and lines from up to 3 different data frames (up to 6 overlays totally)
+# for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+# WARNINGS
+# rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
+# ARGUMENTS
+# data1: a dataframe compatible with ggplot, or a list of data frames
+# x: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for x-axis. write NULL for each "geom_hline" in geom argument
+# y: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for y-axis. Write NULL for each "geom_vline" in geom argument
+# categ: character string or list of character string (one compartment for each list compartment of data1) of the data1 column name for categories. If categ = NULL, no categories (no legend). Some of the list compartments can be NULL, and other not
+# legend.name: character string list of character string (one compartment for each list compartment of data1) of the legend title. If legend.name = NULL and categ != NULL, then legend.name <- categ. Some of the list compartments can be NULL, and other not
+# color: vector of character string or list of character vectors (one compartment for each list compartment of data1) for the colors of categ arguments. If color = NULL, default colors of ggplot2. If non null, it can be either: (1) a single color string (all the dots of the corresponding data1 will have this color, whatever categ NULL or not), (2) if categ non null, a vector of string colors, one for each class of categ (each color will be associated according to the alphabetical order of categ classes), (3) if categ non null, a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ and a single class of categ per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in color. If color is a list, some of the compartments can be NULL. In that case, a different grey color will be used for each NULL compartment
+# geom: character string or list of character string (one compartment for each list compartment of data1) for the kind of plot. Either "geom_point" (scatterplot), "geom_line" (coordinates plotted then line connection from the lowest to highest coordinates), "geom_path" (line connection respecting the order in data1), "geom_hline" (horizontal line) or "geom_vline" (vertical line). BEWARE: for "geom_hline" or "geom_vline", (1) x or y argument must be NULL, respectively, (2) xlim or ylim argument must NOT be NULL, respectively, if only these kind of lines are drawn (if other geom present, then xlim = NULL and ylim = NULL will generate xlim and ylim defined by these other geom, which is not possible with "geom_hline" or "geom_vline"), (3) the function will draw n lines for n values in the x argument column name of the data1 data frame. If several colors required, the categ argument must be specified and the corresponding categ column name must exist in the data1 data frame with a different class name for each row
+# alpha: numeric value (from 0 to 1) of the transparency or list of numeric values (one compartment for each list compartment of data1)
+# dot.size: numeric value of point size
+# line.size: numeric value of line size
+# xlim: 2 numeric values for x-axis range. If NULL, range of x in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the xlim must be already in the corresponding log if xlog argument is not "no" (see below)
+# xlab: a character string or expression for x-axis legend. If NULL, x of the first data frame in data1. Warning message if the elements in x are different between data frames in data1
+# xlog: Either "no" (values in the x argument column of the data1 data frame are not log), "log2" (values in the x argument column of the data1 data frame are log2 transformed) or "log10" (values in the x argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+# x.tick.nb: approximate number of desired label values on the x-axis (n argument of the the fun_scale() function)
+# x.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if xlog is other than "no". In that case, play with the xlim and x.tick.nb arguments
+# x.left.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to xlim. If different from 0, add the range of the axis * x.left.extra.margin (e.g., abs(xlim[2] - xlim[1]) * x.left.extra.margin) to the left of x-axis
+# x.right.extra.margin: idem as x.left.extra.margin but to the bottom of x-axis
+# ylim: 2 numeric values for y-axis range. If NULL, range of y in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the ylim must be already in the corresponding log if ylog argument is not "no" (see below)
+# ylab: a character string or expression for y-axis legend. If NULL, y of the first data frame in data1. Warning message if the elements in y are different between data frames in data1
+# ylog: Either "no" (values in the y argument column of the data1 data frame are not log), "log2" (values in the y argument column of the data1 data frame are log2 transformed) or "log10" (values in the y argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+# y.tick.nb: approximate number of desired label values on the y-axis (n argument of the the fun_scale() function)
+# y.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if ylog is other than "no". In that case, play with the ylim and y.tick.nb arguments
+# y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis
+# xy.include.zero: logical. Does xlim and ylim range include 0? Ok even if xlog = TRUE or ylog = TRUE because xlim and ylim must already be log transformed values
+# text.size: numeric value of the size of the (1) axis numbers and axis legends and (2) texts in the graphic legend
+# title: character string of the graph title
+# title.text.size: numeric value of the title size (in points)
+# show.legend: logical. Show legend? Not considered if categ argument is NULL, because this already generate no legend
+# classic: logical. Use the classic theme (article like)?
+# grid: logical. Draw horizontal and vertical lines in the background to better read the values? Not considered if classic = FALSE
+# raster: logical. Dots in raster mode? If FALSE, dots from each geom_point from geom argument are in vectorial mode (bigger pdf and long to display if millions of dots). If TRUE, dots from each geom_point from geom argument are in matricial mode (smaller pdf and easy display if millions of dots, but long to generate the layer). If TRUE, the plot region will be square to avoid a bug in fun_gg_point_rast(). If TRUE, solve the transparency problem with some GUI. Overriden by vectorial.limit if non NULL
+# vectorial.limit: positive integer value indicating the limit of the dot number above which geom_point from geom argument switch from vectorial mode to raster mode (see the raster argument). If any layer is raster, then the region plot will be square to avoid a bug in fun_gg_point_rast(). Inactive the raster argument if non NULL
+# return: logical. Return the graph info?
+# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
+# add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# ggplot2
+# if raster plots are drawn (see the raster and vectorial.limit arguments):
+# Cairo
+# grid
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_gg_palette()
+# fun_gg_point_rast()
+# fun_pack()
+# fun_check()
+# RETURN
+# a scatter plot is plot argument is TRUE
+# a list of the graph info if return argument is TRUE:
+# $data: the graphic info coordinates
+# $removed.row.nb: a list of the removed rows numbers in data frames (because of NA). NULL if no row removed
+# $removed.rows: a list of the removed rows in data frames (because of NA). NULL if no row removed
+# $axes: the x-axis and y-axis info
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+## NICE REPRESENTATION
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = expression(paste("TIME (", 10^-20, " s)")), ylog = "log10", y.tick.nb = 5, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, classic = TRUE)
+## SINGLE GEOMETRIC LAYER
+### simple example (1) of scatter plot using the classical writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time")
+### simple example (2) of scatter plot, identical to (1) but using the list writting. Here, a list of one compartment, systematically named L1, is provided to the data1, x, y, categ, geom and alpha. Contrary to example (1), the geom and alpha argument have to be included because the default value are not lists (if data1 is a list, all the x, y, categ, legend.name, color, geom and alpha must also be list if non NULL)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
+### color of dots. Example (1) using the classical writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", color = "blue")
+### color of dots. Example (2) using the list writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), color = list(L1 = "blue"), geom = list(L1 = "geom_point"), alpha = list(L1 = 1))
+### From here, classical writting is use for single element in data1 and list writting otherwise
+### color of dots. Example (3) when dots are in different categories. Note that categ argument controls the legend display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group")
+### color of dots. Example (4) when dots are in different categories. A single color mentionned is applied to all the dots
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = "coral")
+### color of dots. Example (5) when dots are in different categories. Numbers can be used if ggplot colors are desired
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = 2)
+### color of dots. Example (6) when dots are in different categories, with one color per category (try also color = 2:1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = c("coral", "green"))
+### color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B"), col = rep(c("coral", "green"), each = 3)) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = obs1$col)
+### color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way (ggplot colors)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = as.numeric(obs1$group))
+### legend name
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", legend.name = "CLASSES")
+### different geom features. Example (1) with geom_line kind of lines
+# obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_line", categ = "group")
+### different geom features. Example (2) with geom_path kind of lines (see the difference with (1))
+# obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_path", categ = "group")
+### different geom features. Example (3) with geom_hline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
+# obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = NULL, y = "km", geom = "geom_hline", categ = "group", xlim = c(1,10))
+### different geom features. Example (4) with geom_vline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
+# obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = NULL, geom = "geom_vline", categ = "group", ylim = c(1,10))
+## MULTI GEOMETRIC LAYERS
+### Note that in subsequent examples, names of list compartments are systematically referred to as L1, L2, etc., to show the correspondence between the arguments data1, x, y, categ, etc.
+### single layer (as examples above)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
+### simple example of two layers
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+### color of dots. Example (1)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+### color of dots. Example (2) of the legend display. The categ argument must be supplied. Make a fake categorical colum in the data frame if necessary (as in this example). The categ argument triggers the legend display. The legend.name argument is used to remove the legend title of each layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = "GROUP1") ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = "GROUP2") ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = NULL, L2 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+### color of dots. Example (3) when dots are in different categories (default colors)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+### color of dots. Example (3) when dots are in different categories. A single color mentionned per layer is applied to all the dots of the layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+### color of dots. Example (5) when dots are in different categories, with one color per category in each layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = c("coral", "blue"), L2 = c("green", "black")))
+### color of dots. Example (4) when dots are in different categories. Numbers can be used if ggplot colors are desired
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = 1:2, L2 = c(4, 7)))
+### color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers). BEWARE: in color argument, if the column of the data frame does not exist, color can be still displayed (L2 = obs2$notgood is equivalent to L2 = NULL). Such situation is reported in the warning messages (see below)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = obs1$col1, L2 = obs2$col2))
+### color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way is not recommended with mutiple layers
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = as.numeric(obs1$group1), L2 = as.numeric(obs2$group2)))
+### legend name
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = "CLASS A", L2 = "CLASS G"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+### different geom features. Example (1) with 5 layers. Note that order in data1 defines the overlay order (from below to above) and the order in the legend (from top to bottom)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; obs3 <- data.frame(time = c(29, 31), group3 = c("HORIZ.THRESHOLD.1", "HORIZ.THRESHOLD.2")) ; obs4 <- data.frame(km = 26, group4 = "VERTIC.THRESHOLD") ; obs5 <- data.frame(km = seq(1, 100, 0.1), time = 7*seq(1, 100, 0.1)^0.5, group5 = "FUNCTION") ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2, L3 = obs3, L4 = obs4, L5 = obs5), x = list(L1 = "km", L2 = "km", L3 = NULL, L4 = "km", L5 = "km"), y = list(L1 = "time", L2 = "time", L3 = "time", L4 = NULL, L5 = "time"), categ = list(L1 = "group1", L2 = "group2", L3 = "group3", L4 = "group4", L5 = "group5"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline", L4 = "geom_vline", L5 = "geom_line"), alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5, L4 = 0.5, L5 = 0.5), xlim = c(10, 40), ylim = c(10, 40), classic = TRUE, line.size = 0.75)
+### layer transparency. One transparency defined by layer (from 0 invisible to 1 opaque). Note that for lines, transparency in not applied in the legend to prevent a ggplot2 bug (https://github.com/tidyverse/ggplot2/issues/2452)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 1, L2 = 0.1))
+### other different example of mutiple geom features are shown in the fun_segmentation function
+## OTHER GRAPHIC ARGUMENTS
+### dot size (line.size argument controls size of lines)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", dot.size = 5)
+### axis management: examples are shown for x-axis but are identical for y-axis
+### x-axis limits. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(-1, 25))
+### x-axis limits. Example (2) showing that order matters in ylim argument
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(25, -1))
+### log scale. Example (1). BEWARE: x column must be log, otherwise incoherent scale (see below warning message with the return argument)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10")
+### log scale. Example (2). BEWARE: values of the xlim must be in the corresponding log
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(1, 10))
+### tick number. Example (1). Note that the final number shown is approximate
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.tick.nb = 6)
+### tick number. Example (2) using a log2 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log2", x.tick.nb = 6)
+### tick number. Example (3) using a log10 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.tick.nb = 6)
+### tick number. Example (4) using a log10 scale: the reverse x-axis correctly deal with log10 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(7, 2))
+### secondary tick number. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.inter.tick.nb = 4)
+### secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.inter.tick.nb = 4)
+### extra margins. To avoid dot cuts
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.left.extra.margin = 0.25, x.right.extra.margin = 0.25)
+### include zero in both the x-axis and y-xis
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xy.include.zero = TRUE)
+### graph title, text size and legend display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", text.size = 8, title = "GRAPH1", title.text.size = 16, show.legend = TRUE)
+### raster display. This switchs from vectorial mode to raster mode. The display can takes some time, but this is easier to export and handle than vectorial display
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(100000, 22, 3), time = rnorm(100000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", raster = TRUE)
+### classic representation (use grid = TRUE to display the background lines of the y axis ticks)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", classic = TRUE, grid = FALSE)
+### graphic info. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", return = TRUE)
+### graphic info. Example (2) of assignation and warning message display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; output <- fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", return = TRUE) ; cat(output$warnings)
+### add ggplot2 functions
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", add = "+ggplot2::theme_classic()")
+### all the arguments
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = "TIME (s)", ylog = "log10", y.tick.nb = 5, y.inter.tick.nb = NULL, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, text.size = 12, title = "", title.text.size = 8, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
+# DEBUGGING
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; data1 = list(L1 = obs1, L2 = obs2) ; x = list(L1 = "km", L2 = "km") ; y = list(L1 = "time", L2 = "time") ; categ = list(L1 = "group1", L2 = "group2") ; legend.name = NULL ; color = list(L1 = 4:5, L2 = 7:8) ; geom = list(L1 = "geom_point", L2 = "geom_point") ; alpha = list(L1 = 0.5, L2 = 0.5) ; dot.size = 3 ; line.size = 0.5 ; xlim = c(25, 0) ; xlab = "KM" ; xlog = "no" ; x.tick.nb = 10 ; x.inter.tick.nb = 1 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = c(1, 25) ; ylab = "TIME (s)" ; ylog = "log2" ; y.tick.nb = 5 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")), L2 = data.frame(a = (1:6)*2, b = ((1:6)^2)*2, group = c("A1", "A1", "A1", "B1", "B1", "B1")), L3 = data.frame(a = (1:6)*3, b = ((1:6)^2)*3, group3 = c("A4", "A5", "A6", "A7", "B4", "B5"))) ; data1$L1$a[3] <- NA ; data1$L1$group[5] <- NA ; data1$L3$group3[4] <- NA ; x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = NULL) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = "a") ; categ = list(L1 = "group", L2 = NULL, L3 = NULL) ; legend.name = NULL ; color = NULL ; geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline") ; alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5) ; dot.size = 1 ; line.size = 0.5 ; xlim = c(14, 4) ; xlab = NULL ; xlog = "log10" ; x.tick.nb = 10 ; x.inter.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = c(60, 5) ; ylab = NULL ; ylog = "log10" ; y.tick.nb = 10 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# data1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; data1 ; x = NULL; y = "km"; categ = "group"; legend.name = NULL ; color = NULL ; geom = "geom_hline"; alpha = 0.5 ; dot.size = 1 ; line.size = 0.5 ; xlim = c(1,10) ; xlab = NULL ; xlog = "log10" ; x.tick.nb = 10 ; x.inter.tick.nb = 4 ; x.left.extra.margin = 0 ; x.right.extra.margin = 0 ; ylim = NULL ; ylab = expression(paste("TIME (", 10^-20, " s)")) ; ylog = "log10" ; y.tick.nb = 10 ; y.inter.tick.nb = 2 ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; xy.include.zero = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; show.legend = TRUE ; classic = FALSE ; grid = FALSE ; raster = FALSE ; vectorial.limit = NULL ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_gg_palette", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
 }
+if(length(find("fun_gg_point_rast", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_point_rast() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# reserved words to avoid bugs (used in this function)
+reserved.words <- c("fake_x", "fake_y", "fake_categ", "color")
+# end reserved words to avoid bugs (used in this function)
+# check list lengths (and names of data1 compartments if non name present)
+warning <- NULL
+if(all(class(data1) == "list")){
+if(length(data1) > 6){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A LIST OF 6 DATA FRAMES MAXIMUM (6 OVERLAYS MAX)\n\n================\n\n")
+stop(tempo.cat)
+}
+if(is.null(names(data1))){
+names(data1) <- paste0("L", 1:length(data1))
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL NAME COMPARTMENT OF data1 LIST -> NAMES RESPECTIVELY ATTRIBUTED TO EACH COMPARTMENT:\n", paste(names(data1), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if( ! is.null(x)){
+if( ! (all(class(x) == "list") & length(data1) == length(x))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}else{
+x <- vector("list", length(data1))
+}
+if( ! is.null(y)){
+if( ! (all(class(y) == "list") & length(data1) == length(y))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}else{
+y <- vector("list", length(data1))
+}
+if( ! is.null(categ)){
+if( ! (all(class(categ) == "list") & length(data1) == length(categ))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(legend.name)){
+if( ! (all(class(legend.name) == "list") & length(data1) == length(legend.name))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! is.null(color)){
+if( ! (all(class(color) == "list") & length(data1) == length(color))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if( ! (all(class(geom) == "list") & length(data1) == length(geom))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! (all(class(alpha) == "list") & length(data1) == length(alpha))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT MUST BE A LIST OF SAME LENGTH AS data1 IF data1 IS A LIST\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end check list lengths (and names of data1 compartments if non name present)
+# conversion into lists
+if(all(is.data.frame(data1))){
+data1 <- list(L1 = data1)
+if(all(class(x) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+x <- list(L1 = x)
+}
+if(all(class(y) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+y <- list(L1 = y)
+}
+if( ! is.null(categ)){
+if(all(class(categ) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+categ <- list(L1 = categ)
+}
+}
+if( ! is.null(legend.name)){
+if(all(class(legend.name) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": legend.name ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+legend.name <- list(L1 = legend.name)
+}
+}
+if( ! is.null(color)){
+if(all(class(color) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+color <- list(L1 = color)
+}
+}
+if(all(class(geom) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+geom <- list(L1 = geom)
+}
+if(all(class(alpha) == "list")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": alpha ARGUMENT CANNOT BE A LIST IF data1 IS A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}else{
+alpha <- list(L1 = alpha)
+}
+}
+# end conversion into lists
+# legend name filling
+if(is.null(legend.name) & ! is.null(categ)){
+legend.name <- categ
+}else if(is.null(legend.name) & is.null(categ)){
+legend.name <- vector("list", length(data1)) # null list
+}
+# end legend name filling
+# ini categ for legend display
+fin.lg.disp <- vector("list", 6) # will be used at the end to display or not legends
+fin.lg.disp[] <- FALSE
+legend.disp <- vector("list", length(data1))
+if(is.null(categ) | show.legend == FALSE){
+legend.disp[] <- FALSE
+}else{
+for(i2 in 1:length(data1)){
+if(is.null(categ[[i2]])){
+legend.disp[[i2]] <- FALSE
+}else{
+legend.disp[[i2]] <- TRUE
+}
+}
+}
+# end ini categ for legend display
+# integer colors into gg_palette
+tempo.check.color <- NULL
+for(i1 in 1:length(data1)){
+if(any(is.na(color[[i1]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": color ARGUMENT CANNOT CONTAIN NA\n\n================\n\n")
+stop(tempo.cat)
+}
+tempo.check.color <- c(tempo.check.color, fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem)
+}
+tempo.check.color <- ! tempo.check.color # invert TRUE and FALSE because if integer, then problem = FALSE
+if(any(tempo.check.color == TRUE)){ # convert integers into colors
+tempo.integer <- unlist(color[tempo.check.color])
+tempo.color <- fun_gg_palette(max(tempo.integer, na.rm = TRUE))
+for(i1 in 1:length(data1)){
+if(tempo.check.color[i1] == TRUE){
+color[[i1]] <-tempo.color[color[[i1]]]
+}
+}
+}
+# end integer colors into gg_palette
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+compart.null.color <- 0 # will be used to attribute a color when color is non NULL but a compartment of color is NULL
+data1.ini <- data1 # to report NA removal
+removed.row.nb <- vector("list", length = length(data1)) # to report NA removal
+removed.rows <- vector("list", length = length(data1)) # to report NA removal
+for(i1 in 1:length(data1)){
+tempo <- fun_check(data = data1[[i1]], data.name = ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+# reserved word checking
+if(any(names(data1[[i1]]) %in% reserved.words)){ # I do not use fun_name_change() because cannot control y before creating "fake_y". But ok because reserved are not that common
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COLUMN NAMES OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " ARGUMENT CANNOT BE ONE OF THESE WORDS\n", paste(reserved.words, collapse = " "), "\nTHESE ARE RESERVED FOR THE ", function.name, " FUNCTION\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+# end reserved word checking
+# check of geom now because required for y argument
+tempo <- fun_check(data = geom[[i1]], data.name = ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), options = c("geom_point", "geom_line", "geom_path", "geom_hline", "geom_vline"), length = 1, fun.name = function.name) ; eval(ee)
+# end check of geom now because required for y argument
+if(is.null(x[[i1]])){
+if(all(geom[[i1]] != "geom_hline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": x ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "x", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{
+x[[i1]] <- "fake_x"
+data1[[i1]] <- cbind(data1[[i1]], fake_x = NA)
+data1[[i1]][, "fake_x"] <- as.numeric(data1[[i1]][, "fake_x"])
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_x\" FOR FINAL DRAWING")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}else{
+if(all(geom[[i1]] == "geom_hline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": x ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\"\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = x[[i1]], data.name = ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+if(is.null(y[[i1]])){
+if(all(geom[[i1]] != "geom_vline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": y ARGUMENT CANNOT BE NULL EXCEPT IF ", ifelse(length(geom) == 1, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{
+y[[i1]] <- "fake_y"
+data1[[i1]] <- cbind(data1[[i1]], fake_y = NA)
+data1[[i1]][, "fake_y"] <- as.numeric(data1[[i1]][, "fake_y"])
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT ASSOCIATED TO ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT ", geom[[i1]], " -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_y\" FOR FINAL DRAWING")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}else{
+if(all(geom[[i1]] == "geom_vline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ": y ARGUMENT MUST BE NULL IF ", ifelse(length(geom) == 1, "geom", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_vline\"\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = y[[i1]], data.name = ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+if( ! (x[[i1]] %in% names(data1[[i1]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! (y[[i1]] %in% names(data1[[i1]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+# na detection and removal (done now to be sure of the correct length of categ)
+if(x[[i1]] == "fake_x" & y[[i1]] == "fake_y"){ # because the code cannot accept to be both "fake_x" and "fake_y" at the same time
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\nTHE CODE CANNOT ACCEPT x AND y TO BE \"fake_x\" AND \"fake_y\" IN THE SAME DATA FRAME ", i1, " \n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(is.na(data1[[i1]][, c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]))){
+tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][c(if(x[[i1]] == "fake_x"){NULL}else{x[[i1]]}, if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]), FUN = is.na), FUN = which))
+removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb)
+# report of removed rows will be performed at the very end
+data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA DETECTED IN COLUMN ", if(x[[i1]] == "fake_x"){""}else{ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1))}, if(x[[i1]] != "fake_x" & y[[i1]] != "fake_y"){" AND "}, if(y[[i1]] == "fake_y"){""}else{ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1))}, " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ". CORRESPONDING ROWS HAVE BEEN REMOVED (SEE $removed.row.nb AND $removed.rows)")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end na detection and removal (done now to be sure of the correct length of categ)
+tempo <- fun_check(data = data1[[i1]][, x[[i1]]], data.name = ifelse(length(x) == 1, "x OF data1", paste0("x NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "numeric", na.contain = ifelse(x[[i1]] == "fake_x", TRUE, FALSE), fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = data1[[i1]][, y[[i1]]], data.name = ifelse(length(y) == 1, "y OF data1", paste0("y NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "numeric", na.contain = ifelse(y[[i1]] == "fake_y", TRUE, FALSE), fun.name = function.name) ; eval(ee)
+if(( ! is.null(categ)) & ( ! is.null(categ[[i1]]))){ # if categ[[i1]] = NULL, fake_categ will be created later on
+tempo <- fun_check(data = categ[[i1]], data.name = ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
+if( ! (categ[[i1]] %in% names(data1[[i1]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT MUST BE A COLUMN NAME OF ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+# na detection and removal (done now to be sure of the correct length of categ)
+if(any(is.na(data1[[i1]][, categ[[i1]]]))){
+tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][categ[[i1]]]), FUN = is.na), FUN = which))
+removed.row.nb[[i1]] <- c(removed.row.nb[[i1]], tempo.removed.row.nb)
+# report of removed rows will be performed at the very end
+data1[[i1]] <- data1[[i1]][-tempo.removed.row.nb, ]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE CATEGORY COLUMN:\n", paste(categ[[i1]], collapse = " "), "\nCONTAINS NA")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end na detection and removal (done now to be sure of the correct length of categ)
+tempo1 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "vector", mode = "character", na.contain = FALSE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_check(data = data1[[i1]][, categ[[i1]]], data.name = ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), class = "factor", na.contain = FALSE, fun.name = function.name, print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), " MUST BE A FACTOR OR CHARACTER VECTOR\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo1$problem == FALSE){
+data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
 
-
-################ Exporting results (text & tables)
-
-
-######## fun_report() #### print string or data object into output file
-
-
-# Check OK: clear to go Apollo
-fun_report <- function(data = NULL, output ="results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, noquote = TRUE, sep = 2){
-    # AIM
-    # log file function: print a character string or a data object into a same output file
-    # REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
-    # fun_check()
-    # ARGUMENTS
-    # data: object to print in the output file. cannot be NULL
-    # output: name of the output file
-    # path: location of the output file
-    # no.overwrite: (logical) if output file already exists, defines if the printing is appended (default TRUE) or if the output file content is erased before printing (FALSE)
-    # rownames.kept: (logical) defines whether row names have to be removed or not in small tables (less than length.rows rows)
-    # vector.cat (logical). If TRUE print a vector of length > 1 using cat() instead of capture.output(). Otherwise (default FALSE) the opposite
-    # noquote: (logical). If TRUE no quote are present for the characters
-    # sep: number of separating lines after printed data (must be integer)
-    # RETURN
-    # nothing
-    # EXAMPLES
-    # fun_report()
-    # fun_report(data = 1:3, output = "results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, noquote = FALSE, sep = 2)
-    # DEBUGGING
-    # data = 1:3 ; output = "results.txt" ; path = "C:/Users/Gael/Desktop" ; no.overwrite = TRUE ; rownames.kept = FALSE ; vector.cat = FALSE ; noquote = FALSE ; sep = 2 # for function debugging
-    # function name
-    function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
-    # end function name
-    # required function checking
-    if(length(find("fun_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    # argument checking without fun_check()
-    if(is.null(data)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT CANNOT BE NULL\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking without fun_check()
-    # argument checking with fun_check()
-    arg.check <- NULL # for function debbuging
-    checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
-    ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
-    tempo <- fun_check(data = output, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & output == ""){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": output ARGUMENT AS \"\" DOES NOT CORRESPOND TO A VALID FILE NAME\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = path, class = "character", length = 1, fun.name = function.name) ; eval(ee)
-    if(tempo$problem == FALSE & dir.exists(path) == FALSE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": path ARGUMENT DOES NOT CORRESPOND TO EXISTING DIRECTORY\n", paste(path, collapse = "\n"),"\n\n================\n\n")
-        cat(tempo.cat)
-        arg.check <- c(arg.check, TRUE)
-    }
-    tempo <- fun_check(data = no.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = rownames.kept, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = vector.cat, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = noquote, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
-    tempo <- fun_check(data = sep, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_check()
-    }
-    # end argument checking with fun_check()
-    # source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
-    # the 4 next lines are inactivated but kept because at a time, I might have a problem with data (solved with data = NULL). These 4 lines are just to know how to detect a missing argument. Important here because if data is not provided, print the code of the data function
-    # arg.user.list <- as.list(match.call(expand.dots=FALSE))[-1] # recover all the arguments provided by the function user (excluding the argument with defaults values not provided by the user. Thus, it is really the list indicated by the user)
-    # default.arg.list <- formals(fun = sys.function(sys.parent())) # list of all the arguments of the function with their default values (not the values of the user !). It seems that ls() as first line of the function provide the names of the arguments (empty, called, etc., or not)
-    # arg.without.default.value <- sapply(default.arg.list, is.symbol) & sapply(sapply(default.arg.list, as.character), identical, "") # logical to detect argument without default values (these are typeof "symbol" and class "name" and empty character
-    # if( ! all(names(default.arg.list)[arg.without.default.value] %in% names(arg.user.list))){ # test that the arguments with no null values are provided by the user
-    # tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": VALUE REQUIRED FOR THESE ARGUMENTS WITH NO DEFAULTS VALUES: ", paste(names(default.arg.list)[arg.without.default.value][ ! names(default.arg.list)[arg.without.default.value] %in% names(arg.user.list)], collapse = " "), "\n\n================\n\n")
-    #stop(tempo.cat)
-    # }
-    # end argument checking
-    # main code
-    if(all(class(data) %in% c("matrix", "data.frame", "table"))){
-        if(rownames.kept == FALSE & all(class(data) == "data.frame") & nrow(data) != 0 & nrow(data) <= 4){ # for data frames with nrows <= 4
-            rownames.output.tables <- ""
-            length.rows <- nrow(data)
-            for(i in 1:length.rows){ # replace the rownames of the first 4 rows by increasing number of spaces (because identical row names not allowed in data frames). This method cannot be extended to more rows as the printed data frame is shifted on the right because of "big empty rownames"
-                rownames.output.tables <- c(rownames.output.tables, paste0(rownames.output.tables[i]," ", collapse=""))
-            }
-            row.names(data) <- rownames.output.tables[1:length.rows]
-        }else if(rownames.kept == FALSE & all(class(data) %in% c("matrix", "table"))){
-            rownames(data) <- rep("", nrow(data)) # identical row names allowed in matrices and tables
-        }
-        if(noquote == TRUE){
-            capture.output(noquote(data), file=paste0(path, "/", output), append = no.overwrite)
-        }else{
-            capture.output(data, file=paste0(path, "/", output), append = no.overwrite)
-        }
-    }else if(is.vector(data) & all(class(data) != "list") & (length(data) == 1 | vector.cat == TRUE)){
-        if(noquote == TRUE){
-            cat(noquote(data), file= paste0(path, "/", output), append = no.overwrite)
-        }else{
-            cat(data, file= paste0(path, "/", output), append = no.overwrite)
-        }
-    }else{ # other (array, list, factor or vector with vector.cat = FALSE)
-        if(noquote == TRUE){
-            capture.output(noquote(data), file=paste0(path, "/", output), append = no.overwrite)
-        }else{
-            capture.output(data, file=paste0(path, "/", output), append = no.overwrite)
-        }
-    }
-    sep.final <- paste0(rep("\n", sep), collapse = "")
-    write(sep.final, file= paste0(path, "/", output), append = TRUE) # add a sep
+}
+if(geom[[i1]] == "geom_vline" | geom[[i1]] == "geom_hline"){
+if(length(unique(data1[[i1]][, categ[[i1]]])) != nrow(data1[[i1]])){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(geom) == 1, "geom OF data1", paste0("geom NUMBER ", i1, " OF data1 NUMBER ", i1)), " ARGUMENT IS ", geom[[i1]], ", MEANING THAT ", ifelse(length(categ) == 1, "categ OF data1", paste0("categ NUMBER ", i1, " OF data1 NUMBER ", i1)), " MUST HAVE A DIFFERENT CLASS PER LINE OF data1 (ONE x VALUE PER CLASS)\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+}else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # if categ[[i1]] = NULL, fake_categ will be created. BEWARE: is.null(categ[[i1]]) means no legend display (see above), because categ has not been precised. This also means a single color for data1[[i1]]
+if(length(color[[i1]]) > 1){ # 0 means is.null(color[[i1]]) and 1 is ok -> single color for data1[[i1]]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT BUT CORRESPONDING COLORS IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " HAS LENGTH OVER 1\n", paste(color[[i1]], collapse = " "), "\nWHICH IS NOT COMPATIBLE WITH NULL CATEG -> COLOR RESET TO A SINGLE COLOR")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+color[[i1]] <- NULL # will provide a single color below
+}
+categ[[i1]] <- "fake_categ"
+data1[[i1]] <- cbind(data1[[i1]], fake_categ = "")
+# inactivated because give a different color to different "Line_" categ while a single color for all the data1[[i1]] required. Thus, put back after the color management
+# if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
+# data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
+# }else{
+data1[[i1]][, "fake_categ"] <- data1[[i1]][, "fake_categ"] # as.numeric("") create a vector of NA but class numeric
+# }
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " ARGUMENT -> FAKE COLUMN ADDED TO DATA FRAME ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", NAMED \"fake_categ\" FOR FINAL DRAWING")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if( ! is.null(legend.name[[i1]])){
+tempo <- fun_check(data = legend.name[[i1]], data.name = ifelse(length(legend.name) == 1, "legend.name", paste0("legend.name NUMBER ", i1)),, class = "vector", mode = "character", length = 1, fun.name = function.name)
+}
+if( ! is.null(color)){ # if color is NULL, will be filled later on
+# check the nature of color
+if(is.null(color[[i1]])){
+compart.null.color <- compart.null.color + 1
+color[[i1]] <- grey(compart.null.color / 8) # cannot be more than 7 overlays. Thus 7 different greys. 8/8 is excluded because white dots
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL COLOR IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", SINGLE COLOR ", paste(color[[i1]], collapse = " "), " HAS BEEN ATTRIBUTED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo1 <- fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_check(data = color[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if( ! (all(color[[i1]] %in% colors() | grepl(pattern = "^#", color[[i1]])))){ # check that all strings of low.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(color[[i1]]), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if(any(is.na(color[[i1]]))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE COLORS:\n", paste(unique(color[[i1]]), collapse = " "), "\nCONTAINS NA")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end check the nature of color
+# check the length of color
+if(is.null(categ) & length(color[[i1]]) != 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF categ IS NULL\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if( ! is.null(categ)){
+# No problem of NA management by ggplot2 because already removed
+if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE A SINGLE COLOR IF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IS NULL\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(length(color[[i1]]) == length(unique(data1[[i1]][, categ[[i1]]]))){ # here length(color) is equal to the different number of categ
+data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", THE FOLLOWING COLORS:\n", paste(color[[i1]], collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(length(color[[i1]]) == length(data1[[i1]][, categ[[i1]]])){# here length(color) is equal to nrow(data1[[i1]]) -> Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
+data1[[i1]] <- cbind(data1[[i1]], color = color[[i1]])
+tempo.check <- unique(data1[[i1]][ , c(categ[[i1]], "color")])
+if( ! (nrow(data1[[i1]]) == length(color[[i1]]) & nrow(tempo.check) == length(unique(data1[[i1]][ , categ[[i1]]])))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF THIS categ:\n", paste(unique(mapply(FUN = "paste", data1[[i1]][ ,categ[[i1]]], data1[[i1]][ ,"color"])), collapse = "\n"), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{
+data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+color[[i1]] <- unique(color[[i1]][order(data1[[i1]][, categ[[i1]]])]) # Modif to have length(color) equal to the different number of categ (length(color) == length(levels(data1[[i1]][, categ[[i1]]])))
+tempo.warning <- paste0(ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT HAS THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ AS:\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\n", paste(color[[i1]], collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}else if(length(color[[i1]]) == 1){
+data1[[i1]][, categ[[i1]]] <- factor(data1[[i1]][, categ[[i1]]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+color[[i1]] <- rep(color[[i1]], length(levels(data1[[i1]][, categ[[i1]]])))
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), ", COLOR HAS LENGTH 1 MEANING THAT ALL THE DIFFERENT CLASSES OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), "\n", paste(levels(factor(data1[[i1]][, categ[[i1]]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(color[[i1]], collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), " COLUMN VALUES, OR (3) THE LENGTH OF THE CLASSES IN THIS COLUMN. HERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LENGTH ", length(data1[[i1]][, categ[[i1]]]), " AND CATEG CLASS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+}
+if((geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline") & ! is.null(categ[[i1]])){ # add here after the color management, to deal with the different lines to plot inside any data[[i1]]
+if(categ[[i1]] == "fake_categ"){
+data1[[i1]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i1]]))
+}
+}
+tempo <- fun_check(data = alpha[[i1]], data.name = ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+}
+if(length(data1) > 1){
+if(length(unique(unlist(x))) > 1){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE x ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(x), collapse = " "), "\nX-AXIS OVERLAYING DIFFERENT VARIABLES?")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+if(length(data1) > 1){
+if(length(unique(unlist(y))) > 1){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE y ARGUMENT DOES NOT CONTAIN IDENTICAL COLUMN NAMES:\n", paste(unlist(y), collapse = " "), "\nY-AXIS OVERLAYING DIFFERENT VARIABLES?")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+if(sum(geom %in% "geom_point") > 3){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN FOUR \"geom_point\" ELEMENTS\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(length(geom) - sum(geom %in% "geom_point") > 3){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": geom ARGUMENT CANNOT HAVE MORE THAN THREE LINE ELEMENTS\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = line.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+if( ! is.null(xlim)){
+tempo <- fun_check(data = xlim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & any(xlim %in% c(Inf, -Inf))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": xlim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(xlab)){
+if(all(class(xlab) %in% "expression")){ # to deal with math symbols
+tempo <- fun_check(data = xlab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+}else{
+tempo <- fun_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+}
+tempo <- fun_check(data = xlog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & xlog != "no"){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": xlog ARGUMENT SET TO ", xlog, ".\nVALUES FROM THE x ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(xlog), " TRANSFORMED, AS THE xlog ARGUMENT JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+if( ! is.null(xlim)){
+if(any(xlim <= 0)){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": xlim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF xlog ARGUMENT IS SET TO ", xlog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(any( ! is.finite(if(xlog == "log10"){10^xlim}else{2^xlim}))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": xlim ARGUMENT RETURNS INF WITH THE xlog ARGUMENT SET TO ", xlog, "\nAS SCALE COMPUTATION IS ", ifelse(xlog == "log10", 10, 2), "^xlim:\n", paste(ifelse(xlog == "log10", 10, 2)^xlim, collapse = " "), "\nARE YOU SURE THAT xlim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(xlim, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+}
+if( ! is.null(x.tick.nb)){
+tempo <- fun_check(data = x.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & x.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(x.inter.tick.nb)){
+tempo <- fun_check(data = x.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & x.inter.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": x.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = x.left.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.right.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(ylim)){
+tempo <- fun_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & any(ylim %in% c(Inf, -Inf))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(ylab)){
+if(all(class(ylab) %in% "expression")){ # to deal with math symbols
+tempo <- fun_check(data = ylab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+}else{
+tempo <- fun_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+}
+tempo <- fun_check(data = ylog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ylog != "no"){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, ".\nVALUES FROM THE y ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(ylog), " TRANSFORMED, AS THE ylog ARGUMENT JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+if( ! is.null(ylim)){
+if(any(ylim <= 0)){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF ylog ARGUMENT IS SET TO ", ylog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(any( ! is.finite(if(ylog == "log10"){10^ylim}else{2^ylim}))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT RETURNS INF WITH THE ylog ARGUMENT SET TO ", ylog, "\nAS SCALE COMPUTATION IS ", ifelse(ylog == "log10", 10, 2), "^ylim:\n", paste(ifelse(ylog == "log10", 10, 2)^ylim, collapse = " "), "\nARE YOU SURE THAT ylim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(ylim, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+}
+if( ! is.null(y.tick.nb)){
+tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(y.inter.tick.nb)){
+tempo <- fun_check(data = y.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.inter.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = xy.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+# inactivated because xlim and ylim already log transformed
+# if(tempo$problem == FALSE & ylog == TRUE & xy.include.zero == TRUE){
+#tempo.warning <- paste0("FROM FUNCTION ", function.name, ": BOTH ylog AND xy.include.zero ARGUMENTS SET TO TRUE -> xy.include.zero ARGUMENT RESET TO FALSE")
+# warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+# }
+tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = show.legend, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = raster, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(vectorial.limit)){
+tempo <- fun_check(data = vectorial.limit, class = "vector", typeof = "integer", neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(add)){
+tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string finished by )
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+# packages Cairo and grid tested by fun_gg_point_rast()
+# end package checking
+# main code
+# axes management
+if(is.null(xlim)){
+if(any(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE x COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+xlim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. xlim added here. If NULL, ok if x argument has values
+if(suppressWarnings(all(xlim %in% c(Inf, -Inf)))){
+if(all(unlist(geom) == "geom_hline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_hline KIND OF LINES IF xlim ARGUMENT IS SET TO NULL, SINCE NO X-AXIS DEFINED (", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n")
+stop(tempo.cat)
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " xlim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(xlim, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+xlim.order <- order(xlim) # to deal with inverse axis
+# print(xlim.order)
+xlim <- sort(xlim)
+xlim[1] <- xlim[1] - abs(xlim[2] - xlim[1]) * ifelse(diff(xlim.order) > 0, x.right.extra.margin, x.left.extra.margin) # diff(xlim.order) > 0 means not inversed axis
+xlim[2] <- xlim[2] + abs(xlim[2] - xlim[1]) * ifelse(diff(xlim.order) > 0, x.left.extra.margin, x.right.extra.margin) # diff(xlim.order) > 0 means not inversed axis
+if(xy.include.zero == TRUE){ # no need to check xlog != "no" because done before
+xlim <- range(c(xlim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+xlim <- xlim[xlim.order]
+if(any(is.na(xlim))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(is.null(ylim)){
+if(any(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)) %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE y COLUMN IN data1 CONTAINS -Inf OR Inf VALUES THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+ylim <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)), na.rm = TRUE, finite = TRUE)) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only. ylim added here. If NULL, ok if y argument has values
+if(suppressWarnings(all(ylim %in% c(Inf, -Inf)))){ # happen when y is only NULL
+if(all(unlist(geom) == "geom_vline")){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " NOT POSSIBLE TO ONLY DRAW geom_vline KIND OF LINES IF ylim ARGUMENT IS SET TO NULL, SINCE NO Y-AXIS DEFINED (", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENT MUST BE NULL FOR THESE KIND OF LINES)\n\n================\n\n")
+stop(tempo.cat)
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " ylim ARGUMENT MADE OF NA, -Inf OR Inf ONLY: ", paste(ylim, collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+ylim.order <- order(ylim) # to deal with inverse axis
+ylim <- sort(ylim)
+ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(ylim.order) > 0 means not inversed axis
+ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(ylim.order) > 0 means not inversed axis
+if(xy.include.zero == TRUE){ # no need to check ylog != "no" because done before
+ylim <- range(c(ylim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+ylim <- ylim[ylim.order]
+if(any(is.na(ylim))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
+stop(tempo.cat)
+}
+# end axes management
+# create a fake categ if NULL to deal with legend display
+if(is.null(categ)){
+categ <- vector("list", length(data1))
+categ[] <- "fake_categ"
+for(i2 in 1:length(data1)){
+data1[[i2]] <- cbind(data1[[i2]], fake_categ = "")
+if(geom[[i2]] == "geom_hline" | geom[[i2]] == "geom_vline"){
+data1[[i2]][, "fake_categ"] <- paste0("Line_", 1:nrow(data1[[i2]]))
+}
+}
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL categ ARGUMENT -> FAKE COLUMN ADDED TO EACH DATA FRAME IN data1, NAMED \"fake_categ\" AND FILLED WITH \"\"")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end create a fake categ if NULL to deal with legend display
+# vector of color with length as in data1
+if(is.null(color)){
+color <- vector("list", length(data1))
+length.categ.list <- lapply(lapply(mapply(FUN = "[[", data1, categ, SIMPLIFY = FALSE), FUN = unique), FUN = function(x){length(x[ ! is.na(x)])})
+length.categ.list[sapply(categ, FUN = "==", "fake_categ")] <- 1 # when is.null(color), a single color for all the dots or lines of data[[i1]] that contain "fake_categ" category
+total.categ.length <- sum(unlist(length.categ.list), na.rm = TRUE)
+tempo.color <- fun_gg_palette(total.categ.length)
+tempo.count <- 0
+for(i3 in 1:length(data1)){
+color[[i3]] <- tempo.color[(1:length.categ.list[[i3]]) + tempo.count]
+tempo.count <- tempo.count + length.categ.list[[i3]]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i3)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i3)), ":\n", paste(unlist(color), collapse = " "), "\n", paste(names(data1), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+# end vector of color with length as in data1
+# last check
+for(i1 in 1:length(data1)){
+if(categ[[i1]] != "fake_categ" & length(color[[i1]]) != length(unique(data1[[i1]][, categ[[i1]]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
+stop(tempo.cat)
+}else if(categ[[i1]] == "fake_categ" & length(color[[i1]]) != 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " LAST CHECK: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE LENGTH 1 WHEN ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IS NULL\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end last check
+# conversion of geom_hline and geom_vline
+for(i1 in 1:length(data1)){
+if(geom[[i1]] == "geom_hline" | geom[[i1]] == "geom_vline"){
+final.data.frame <- data.frame()
+for(i3 in 1:nrow(data1[[i1]])){
+tempo.data.frame <- rbind(data1[[i1]][i3, ], data1[[i1]][i3, ])
+if(geom[[i1]] == "geom_hline"){
+tempo.data.frame[, x[[i1]]] <- xlim
+}else if(geom[[i1]] == "geom_vline"){
+tempo.data.frame[, y[[i1]]] <- ylim
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
+stop(tempo.cat)
+}
+# if(is.null(categ[[i1]])){
+# data1[, "fake_categ"] <- paste0("Line_", i3)
+# } #I put that up
+final.data.frame <- rbind(final.data.frame, tempo.data.frame)
+}
+data1[[i1]] <- final.data.frame
+geom[[i1]] <- "geom_line"
+if(length(color[[i1]]) == 1){
+color[[i1]] <- rep(color[[i1]], length(unique(data1[[i1]][ , categ[[i1]]])))
+}else if(length(color[[i1]]) != length(unique(data1[[i1]][ , categ[[i1]]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION TO FIT THE XLIM AND YLIM LIMITS OF THE DATA: ", ifelse(length(color) == 1, "color", paste0("color NUMBER ", i1)), " ARGUMENT MUST HAVE THE LENGTH OF LEVELS OF ", ifelse(length(categ) == 1, "categ", paste0("categ NUMBER ", i1)), " IN ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i1)), "\nHERE IT IS COLOR LENGTH ", length(color[[i1]]), " VERSUS CATEG LEVELS LENGTH ", length(unique(data1[[i1]][, categ[[i1]]])), "\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}
+# end conversion of geom_hline and geom_vline
+# kind of geom_point (vectorial or raster)
+scatter.kind <- vector("list", length = length(data1)) # list of same length as data1, that will be used to use either ggplot2::geom_point() (vectorial dot layer) or fun_gg_point_rast() (raster dot layer)
+fix.ratio <- FALSE
+if(is.null(vectorial.limit)){
+if(raster == TRUE){
+scatter.kind[] <- "fun_gg_point_rast" # not important to fill everything: will be only used when geom == "geom_point"
+fix.ratio <- TRUE
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET TO 1/1 TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+scatter.kind[] <- "ggplot2::geom_point"
+}
+}else{
+for(i2 in 1:length(data1)){
+if(geom[[i2]] == "geom_point"){
+if(nrow(data1[[i2]]) <= vectorial.limit){
+scatter.kind[[i2]] <- "ggplot2::geom_point"
+}else{
+scatter.kind[[i2]] <- "fun_gg_point_rast"
+fix.ratio <- TRUE
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ", ifelse(length(data1) == 1, "data1", paste0("data1 NUMBER ", i2)), " LAYER AS RASTER (NOT VECTORIAL)")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+}
+if(any(unlist(scatter.kind) == "fun_gg_point_rast")){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": RASTER PLOT GENERATED -> ASPECT RATIO OF THE PLOT REGION SET TO 1/1 TO AVOID A BUG OF ELLIPSOID DOT DRAWING")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+# end kind of geom_point (vectorial or raster)
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0
+# no need loop part
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(xlab)){x[[1]]}else{xlab}))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(ylab)){y[[1]]}else{ylab}))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+add.check <- TRUE
+if( ! is.null(add)){ # if add is NULL, then = 0
+if(grepl(pattern = "ggplot2::theme", add) == TRUE){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER.
+\nIT IS RECOMMENDED TO USE \"+ theme(aspect.ratio = 1)\" IF RASTER MODE IS ACTIVATED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+add.check <- FALSE
+}
+}
+if(add.check == TRUE & classic == TRUE){
+# BEWARE: not possible to add several times theme(). NO message but the last one overwrites the others
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+if(grid == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
+axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
+panel.grid.major.x = ggplot2::element_line(colour = "grey75"),
+panel.grid.major.y = ggplot2::element_line(colour = "grey75"),
+aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
+))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), 
+axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
+))
+}
+}else if(add.check == TRUE & classic == FALSE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+panel.background = ggplot2::element_rect(fill = "grey95"), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), 
+axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+panel.grid.major.x = ggplot2::element_line(colour = "grey75"), 
+panel.grid.major.y = ggplot2::element_line(colour = "grey75"), 
+panel.grid.minor.x = ggplot2::element_blank(), 
+panel.grid.minor.y = ggplot2::element_blank(), 
+strip.background = ggplot2::element_rect(fill = "white", colour = "black"), 
+aspect.ratio = if(fix.ratio == TRUE){1}else{NULL}
+# do not work -> legend.position = "none" # to remove the legend completely: https://www.datanovia.com/en/blog/how-to-remove-legend-from-a-ggplot/
+))
+}
+# end no need loop part
+# loop part
+point.count <- 0
+line.count <- 0
+lg.order <- vector(mode = "list", length = 6) # order of the legend
+lg.order <- lapply(lg.order, as.numeric) # order of the legend
+lg.color <- vector(mode = "list", length = 6) # color of the legend
+lg.alpha <- vector(mode = "list", length = 6) # order of the legend
+lg.alpha <- lapply(lg.alpha, as.numeric) # alpha of the legend
+for(i1 in 1:length(data1)){
+if(geom[[i1]] == "geom_point"){
+point.count <- point.count + 1
+if(point.count == 1){
+fin.lg.disp[[1]] <- legend.disp[[point.count + line.count]]
+lg.order[[1]] <- point.count + line.count
+lg.color[[1]] <- color[[i1]]
+lg.alpha[[1]] <- alpha[[i1]]
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], fill = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = color[[i1]], guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of fill. order determines the order in the legend
+}
+if(point.count == 2){
+fin.lg.disp[[2]] <- legend.disp[[point.count + line.count]]
+lg.order[[2]] <- point.count + line.count
+lg.color[[2]] <- color[[i1]]
+lg.alpha[[2]] <- alpha[[i1]]
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], shape = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_shape_manual(name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(19, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of shape
+}
+if(point.count == 3){
+fin.lg.disp[[3]] <- legend.disp[[point.count + line.count]]
+lg.order[[3]] <- point.count + line.count
+lg.color[[3]] <- color[[i1]]
+lg.alpha[[3]] <- alpha[[i1]]
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = scatter.kind[[i1]]))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], stroke = categ[[i1]]), size = dot.size, color = color[[i1]][i5], alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "stroke", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(0.5, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], linetype = 0)))) # values are the values of stroke
+}
+}else{
+line.count <- line.count + 1
+if(line.count == 1){
+fin.lg.disp[[4]] <- legend.disp[[point.count + line.count]]
+lg.order[[4]] <- point.count + line.count
+lg.color[[4]] <- color[[i1]]
+lg.alpha[[4]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], linetype = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round", alpha = alpha[[i1]])) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "linetype", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(1, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
+}
+if(line.count == 2){
+fin.lg.disp[[5]] <- legend.disp[[point.count + line.count]]
+lg.order[[5]] <- point.count + line.count
+lg.color[[5]] <- color[[i1]]
+lg.alpha[[5]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], alpha = categ[[i1]]), color = color[[i1]][i5], size = line.size, lineend = "round")) # beware: a single color allowed for color argument outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(alpha[[i1]], length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
+}
+if(line.count == 3){
+fin.lg.disp[[6]] <- legend.disp[[point.count + line.count]]
+lg.order[[6]] <- point.count + line.count
+lg.color[[6]] <- color[[i1]]
+lg.alpha[[6]] <- 1 # to avoid a bug on windows: if alpha argument is different from 1 for lines (transparency), then lines are not correctly displayed in the legend when using the R GUI (bug https://github.com/tidyverse/ggplot2/issues/2452). No bug when using a pdf
+class.categ <- levels(factor(data1[[i1]][, categ[[i1]]]))
+for(i5 in 1:length(color[[i1]])){ # or length(class.categ). It is the same because already checked that lengths are the same
+tempo.data.frame <- data1[[i1]][data1[[i1]][, categ[[i1]]] == class.categ[i5], ]
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), eval(parse(text = paste("ggplot2::", geom[[i1]], sep ="")))(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], size = categ[[i1]]), color = color[[i1]][i5], alpha = alpha[[i1]], lineend = "round")) # beware: a single color allowed for color argument  outside aesthetic, hence the loop # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "size", name = if(is.null(legend.name)){NULL}else{legend.name[[i1]]}, values = rep(line.size, length(color[[i1]])), guide = ggplot2::guide_legend(override.aes = list(colour = color[[i1]], shape = NA)))) # values are the values of linetype. 1 means solid. Regarding the alpha bug, I have tried different things without success: alpha in guide alone, in geom alone, in both, with different values 
+}
+}
+}
+# end loop part
+# legend display
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::guides(fill = if(fin.lg.disp[[1]] == TRUE){ggplot2::guide_legend(order = lg.order[[1]], override.aes = list(alpha = lg.alpha[[1]], color = lg.color[[1]]))}else{FALSE}, shape = if(fin.lg.disp[[2]] == TRUE){ggplot2::guide_legend(order = lg.order[[2]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[2]]))}else{FALSE}, stroke = if(fin.lg.disp[[3]] == TRUE){ggplot2::guide_legend(order = lg.order[[3]], override.aes = list(alpha = lg.alpha[[2]], color = lg.color[[3]]))}else{FALSE}, linetype = if(fin.lg.disp[[4]] == TRUE){ggplot2::guide_legend(order = lg.order[[4]], override.aes = list(alpha = lg.alpha[[4]], color = lg.color[[4]]))}else{FALSE}, alpha = if(fin.lg.disp[[5]] == TRUE){ggplot2::guide_legend(order = lg.order[[5]], override.aes = list(alpha = lg.alpha[[5]], color = lg.color[[5]]))}else{FALSE}, size = if(fin.lg.disp[[6]] == TRUE){ggplot2::guide_legend(order = lg.order[[6]], override.aes = list(alpha = lg.alpha[[6]], color = lg.color[[6]]))}else{FALSE})) # clip = "off" to have secondary ticks outside plot region does not work
+# end legend display
+# scale management
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(xlim = xlim, ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
+# x-axis ticks and inv
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+tempo.scale <- fun_scale(lim = xlim, n = ifelse(is.null(x.tick.nb), length(tempo.coord$x.major_source), x.tick.nb))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_x_continuous(
+breaks = tempo.scale, 
+labels = if(xlog == "log10"){scales::trans_format("identity",  scales::math_format(10^.x))}else if(xlog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(xlog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n")) ; stop(tempo.cat)}, 
+expand = c(0, 0),
+limits = NA,
+trans = ifelse(diff(xlim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_x_reverse()
+))
+# end x-axis ticks and inv
+# y-axis ticks and inv
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+tempo.scale <- fun_scale(lim = ylim, n = ifelse(is.null(y.tick.nb), length(tempo.coord$y.major_source), y.tick.nb))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
+breaks = tempo.scale, 
+labels = if(ylog == "log10"){scales::trans_format("identity",  scales::math_format(10^.x))}else if(ylog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(ylog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n")) ; stop(tempo.cat)}, 
+expand = c(0, 0),
+limits = NA,
+trans = ifelse(diff(ylim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse()
+))
+# end y-axis ticks and inv
+# x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+xlim.order <- order(xlim) # to deal with inverse axis
+ylim.order <- order(ylim) # to deal with inverse axis
+# no secondary ticks for log2. Play with xlim
+if(xlog == "log10"){
+y.range <- tempo.coord$y.range
+if(diff(ylim.order) < 0){y.range <- -(y.range)}
+ini.scipen <- options()$scipen
+options(scipen = -1000) # force scientific format
+power10.exp <- as.integer(substring(text = 10^xlim, first = (regexpr(pattern = "\\+|\\-", text = 10^xlim)))) # recover the power of 10. Example recover 08 from 1e+08
+# print(xlim)
+mantisse <- as.numeric(substr(x = 10^xlim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^xlim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
+options(scipen = ini.scipen) # restore the initial scientific penalty
+# print(power10.exp)
+tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(xlim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(xlim.order) > 0, 1, -1)))))
+tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(xlim.order) > 0, FALSE, TRUE))
+tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^xlim) & tempo.tick.pos <= max(10^xlim)])
+if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 8\n\n============\n\n"))
+stop(tempo.cat)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = tempo.tick.pos, xend = tempo.tick.pos, y = y.range[1], yend = y.range[1] + diff(y.range) / 80))
+}else if(( ! is.null(x.inter.tick.nb)) & xlog == "no"){
+if(x.inter.tick.nb > 0){
+x.ticks.pos <- suppressWarnings(as.numeric(tempo.coord$x.labels)) # too difficult to predict the behavior of tempo.coord$x.major_source depending on xlim neg or not, inv or not. Inv is respected
+if(any(is.na(x.ticks.pos))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 9\n\n============\n\n"))
+stop(tempo.cat)
+}
+y.range <- tempo.coord$y.range
+if(diff(ylim.order) < 0){y.range <- -(y.range)}
+tick.dist <- mean(diff(x.ticks.pos), na.rm = TRUE)
+minor.tick.dist <- tick.dist / (x.inter.tick.nb + 1)
+minor.tick.pos <- seq(x.ticks.pos[1] - tick.dist, x.ticks.pos[length(x.ticks.pos)] + tick.dist, by = minor.tick.dist)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = minor.tick.pos, xend = minor.tick.pos, y = y.range[1], yend = y.range[1] + diff(y.range) / 80))
+}
+}
+# end x-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+# y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+# no secondary ticks for log2. Play with ylim
+if(ylog == "log10"){
+x.range <- tempo.coord$x.range
+if(diff(xlim.order) < 0){x.range <- -(x.range)}
+ini.scipen <- options()$scipen
+options(scipen = -1000) # force scientific format
+power10.exp <- as.integer(substring(text = 10^ylim, first = (regexpr(pattern = "\\+|\\-", text = 10^ylim)))) # recover the power of 10. Example recover 08 from 1e+08
+mantisse <- as.numeric(substr(x = 10^ylim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^ylim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
+options(scipen = ini.scipen) # restore the initial scientific penalty
+tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(ylim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(ylim.order) > 0, 1, -1)))))
+tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(ylim.order) > 0, FALSE, TRUE))
+tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^ylim) & tempo.tick.pos <= max(10^ylim)])
+if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n"))
+stop(tempo.cat)
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = tempo.tick.pos, yend = tempo.tick.pos, x = x.range[1], xend = x.range[1] + diff(x.range) / 80))
+}else if(( ! is.null(y.inter.tick.nb)) & ylog == "no"){
+if(y.inter.tick.nb > 0){
+y.ticks.pos <- suppressWarnings(as.numeric(tempo.coord$y.labels)) # too difficult to predict the behavior of tempo.coord$y.major_source depending on ylim neg or not, inv or not. Inv is respected
+if(any(is.na(y.ticks.pos))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
+stop(tempo.cat)
+}
+x.range <- tempo.coord$x.range
+if(diff(xlim.order) < 0){x.range <- -(x.range)}
+tick.dist <- mean(diff(y.ticks.pos), na.rm = TRUE)
+minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
+minor.tick.pos <- seq(y.ticks.pos[1] - tick.dist, y.ticks.pos[length(y.ticks.pos)] + tick.dist, by = minor.tick.dist)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = x.range[1], xend = x.range[1] + diff(x.range) / 80))
+}
+}
+# end y-axis secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+# end scale management
+if(plot == TRUE){
+suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "),if(is.null(add)){NULL}else{add})))))
+}else{
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+if(return == TRUE){
+output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
+if(is.null(unlist(removed.row.nb))){
+removed.row.nb <- NULL
+removed.rows <- NULL
+}else{
+for(i3 in 1:length(data1)){
+if( ! is.null(removed.row.nb[[i3]])){
+removed.row.nb[[i3]] <- sort(removed.row.nb[[i3]])
+removed.rows[[i3]] <- data1.ini[[i3]][removed.row.nb[[i3]], ]
+}
+}
+}
+output <- list(data = output$data, removed.row.nb = removed.row.nb, removed.rows = removed.rows, axes = output$layout$panel_params[[1]], warnings = paste0("\n", warning, "\n\n"))
+return(output)
+}
+}
+
+
+######## fun_gg_bar_mean() #### ggplot2 mean barplot + overlaid dots if required
+
+
+ 
+
+
+# Check OK: clear to go Apollo
+fun_gg_bar_mean <- function(data1, y, categ, categ.class.order = NULL, categ.legend.name = NULL, categ.color = NULL, bar.width = 0.5, error.disp = NULL, error.whisker.width = 0.5,  dot.color = "same", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 0.25, dot.size = 3, dot.border.size = 0.5, dot.alpha = 0.5, ylim = NULL, ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0, y.bottom.extra.margin = 0, stat.disp = NULL, stat.size = 4, stat.dist = 2, xlab = NULL, ylab = NULL, vertical = TRUE, text.size = 12, title = "", title.text.size = 8, text.angle = 0, classic = FALSE, grid = FALSE, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
+# AIM
+# ggplot2 vertical barplot representing mean values with the possibility to add error bars and to overlay dots
+# for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+# WARNINGS
+# rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
+# if ever bars disappear, see the end of https://github.com/tidyverse/ggplot2/issues/2887
+# to have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1). See categ below
+# with several single bars (categ argument with only one element), bar.width argument (i.e., width argument of ggplot2::geom_bar()) defines each bar width. The bar.width argument also defines the space between bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each bar)
+# with several sets of grouped bars (categ argument with two elements), bar.width argument defines each set of grouped bar width. The bar.width argument also defines the space between set of grouped bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped bar)
+# to manually change the 0 base bar into this code, see https://stackoverflow.com/questions/35324892/ggplot2-setting-geom-bar-baseline-to-1-instead-of-zero
+# ARGUMENTS
+# data1: a dataframe containing one column of values (see y argument below) and one or two columns of categories (see categ argument below). Duplicated column names not allowed
+# y: character string of the data1 column name for y-axis (containing numeric values). Numeric values will be averaged by categ to generate the bars and will also be used to plot the dots
+# categ: vector of character strings of the data1 column name for categories (column of characters or factor). Must either be one or two column names. If a single column name (further refered to as categ1), then one bar per class of categ1. If two column names (further refered to as categ1 and categ2), then one bar per class of categ2, which form a group of bars in each class of categ1. BEWARE, categ1 (and categ2 if it exists) must have a single value of y per class of categ1 (and categ2). To have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1)
+# categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the barplot (the first compartment for categ1 and and the second for categ2). If categ.class.order = NULL, classes are represented according to the alphabetical order. Some compartment can be NULL and other not
+# categ.legend.name: character string of the legend title for categ2. If categ.legend.name = NULL, then categ.legend.name <- categ1 if only categ1 is present and categ.legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required
+# categ.color: vector of character color string for bar filling. If categ.color = NULL, default colors of ggplot2, whatever categ1 and categ2. If categ.color is non null and only categ1 in categ argument, categ.color can be either: (1) a single color string (all the bars will have this color, whatever the classes of categ1), (2) a vector of string colors, one for each class of categ1 (each color will be associated according to categ.class.order of categ1), (3) a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ1 and a single class of categ1 per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in categ.color. If categ.color is non null and categ1 and categ2 specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for bars inside a group of bars)
+# bar.width: numeric value (from 0 to 1) of the bar or set of grouped bar width (see warnings above)
+# error.disp: either "SD", "SD.TOP", "SEM" or "SEM.TOP". If NULL, no error bars added
+# error.whisker.width: numeric value (from 0 to 1) of the whisker (error bar extremities) width, with 0 meaning no whiskers and 1 meaning a width equal to the corresponding bar width
+# dot.color: vector of character string. Idem as categ.color but for dots, except that in the possibility (3), the rule "a single color per class of categ1 and a single class of categ1", cannot be respected (each dot can have a different color). If NULL, no dots plotted
+# dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. If FALSE, dots are randomly spread, using the dot.jitter argument (see below)
+# dot.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the ylim range. Each dot will then be put in one of the bin, with the size the width of the bin. Not considered if dot.tidy is FALSE
+# dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion, with 0 meaning no dispersion and 1 meaning a dispersion in the corresponding bar width interval. Not considered if dot.tidy is TRUE
+# dot.size: numeric value of dot size. Not considered if dot.tidy is TRUE
+# dot.border.size: numeric value of border dot size. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border. Another one leave the border without size control (geom_doplot() feature)
+# dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
+# ylim: 2 numeric values for y-axis range. If NULL, range of y in data1. Order of the 2 values matters (for inverted axis). BEWARE: values of the ylim must be already in the corresponding log if ylog argument is not "no" (see below)
+# ylog: Either "no" (values in the y argument column of the data1 data frame are not log), "log2" (values in the y argument column of the data1 data frame are log2 transformed) or "log10" (values in the y argument column of the data1 data frame are log10 transformed). BEWARE: do not tranform the data, but just display ticks in a log scale manner. Thus, negative or zero values allowed. BEWARE: not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+# y.tick.nb: approximate number of desired label values on the y-axis (n argument of the the fun_scale() function)
+# y.inter.tick.nb: number of desired secondary ticks between main ticks. Not considered if ylog is other than "no". In that case, play with the ylim and y.tick.nb arguments
+# y.include.zero: logical. Does ylim range include 0? Ok even if ylog = TRUE because ylim must already be log transformed values
+# y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis
+# y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
+# stat.disp: add the mean number above the corresponding bar. Either NULL (no number shown), "top" (at the top of the figure region) or "above" (above each bar)
+# stat.size: numeric value of the stat size (in points). Increase the value to increase text size
+# stat.dist: numeric value of the stat distance. Increase the value to increase the distance
+# xlab: a character string or expression for x-axis legend. If NULL, character string of categ1
+# ylab: a character string or expression for y-axis legend. If NULL, character string of the y argument
+# vertical: logical. Vertical bars? BEWARE: will be automatically set to TRUE if ylog argument is other than "no". Indeed, not possible to have horizontal bars with a log axis, due to a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+# text.size: numeric value of the size of the (1) axis numbers and axis legends, (2) texts in the graphic legend, (3) stats above bars (in points)
+# title: character string of the graph title
+# title.text.size: numeric value of the title size (in points)
+# text.angle: integer value of the text angle for the x-axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+# classic: logical. Use the classic theme (article like)?
+# grid: logical. draw horizontal lines in the background to better read the bar values? Not considered if classic = FALSE
+# return: logical. Return the graph parameters?
+# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
+# add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# ggplot2
+# scales
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_2d_comp()
+# fun_gg_just()
+# fun_gg_palette()
+# fun_name_change()
+# fun_pack()
+# fun_check()
+# fun_round()
+# fun_scale()
+# RETURN
+# a barplot if plot argument is TRUE
+# a list of the graph info if return argument is TRUE:
+# $stat: the graphic statistics
+# $removed.row.nb: which rows have been removed due to NA detection in y and categ columns (NULL if no row removed)
+# $removed.rows: removed rows containing NA (NULL if no row removed)
+# $data: the graphic bar and dot coordinates
+# $axes: the x-axis and y-axis info
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+### nice representation (1)
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "LEGEND", categ.color = NULL, bar.width = 0.3, error.disp = "SD.TOP", error.whisker.width = 0.8, dot.color = "same", dot.jitter = 0.5, dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 0.5, ylim = c(10, 25), y.include.zero = TRUE, stat.disp = "above", stat.size = 4, xlab = "GROUP", ylab = "MEAN", text.size = 12, title = "GRAPH1", title.text.size = 8, text.angle = 0, classic = TRUE, grid = TRUE)
+### nice representation (2)
+# set.seed(1) ; obs1 <- data.frame(Time = c(rnorm(24, 0), rnorm(24, -10), rnorm(24, 10), rnorm(24, 20)), Group1 = rep(c("CAT", "DOG"), times = 48), Group2 = rep(c("A", "B", "C", "D"), each = 24)) ; set.seed(NULL) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A", "D", "C")), categ.legend.name = "LEGEND", categ.color = NULL, bar.width = 0.8, dot.color = "grey50", dot.tidy = TRUE, dot.bin.nb = 60, dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 0.5, ylim= c(-20, 30), stat.disp = "above", stat.size = 4, stat.dist = 1, xlab = "GROUP", ylab = "MEAN", vertical = FALSE, text.size = 12, title = "GRAPH1", title.text.size = 8, text.angle = 45, classic = FALSE)
+### simple example
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1")
+### separate bars. Example (1) of modification of bar color using a single value
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = "white")
+### separate bars. Example (2) of modification of bar color using one value par class of categ2
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = c("coral", "lightblue"))
+### separate bars. Example (3) of modification of bar color using the bar.color data frame column, with respect of the correspondence between categ2 and bar.color columns
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), bar.color = rep(c("coral", "lightblue"), time = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", categ.color = obs1$bar.color)
+### separate bars. Example (1) of modification of dot color, using the same dot color as the corresponding bar
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = "same")
+### separate bars. Example (2) of modification of dot color, using a single color for all the dots
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = "green")
+### separate bars. Example (3) of modification of dot color, using one value par class of categ2
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = c("green", "brown"))
+### separate bars. Example (4) of modification of dot color, using different colors for each dot
+# obs1 <- data.frame(Time = 1:10, Group1 = rep(c("G", "H"), times = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
+### grouped bars. Simple example
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"))
+### grouped bars. More grouped bars
+# obs1 <- data.frame(Time = 1:24, Group1 = rep(c("G", "H"), times = 12), Group2 = rep(c("A", "B", "C", "D"), each = 6)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"))
+### grouped bars. Example (1) of modification of bar color, using a single value
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = "white")
+### grouped bars. Example (2) of modification of bar color, using one value par class of categ2
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = c("coral", "lightblue"))
+### grouped bars. Example (3) of modification of bar color, using one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("coral", "lightblue"), each = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), categ.color = obs1$bar.color)
+### grouped bars. Example (1) of modification of dot color, using the same dot color as the corresponding bar
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same")
+### grouped bars. Example (2) of modification of dot color, using a single color for all the dots
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "green")
+### grouped bars. Example (3) of modification of dot color, using one value par class of categ2
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = c("green", "brown"))
+### grouped bars. Example (4) of modification of dot color, using different colors for each dot
+# obs1 <- data.frame(Time = 1:10, Group1 = rep(c("G", "H"), times = 5), Group2 = rep(c("A", "B"), each = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
+### no dots (y.include.zero set to TRUE to see the lowest bar):
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE)
+### bar width. Example (1) with bar.width = 0.25 -> three times more space between single bars than the bar width (y.include.zero set to TRUE to see the lowest bar)
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = NULL, y.include.zero = TRUE, bar.width = 0.25)
+### bar width. Example (2) with bar.width = 1, no space between single bars
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = "Group1", dot.color = NULL, y.include.zero = TRUE, bar.width = 1)
+### bar width. Example (3) with bar.width = 0.25 -> three times more space between sets of grouped bars than the set width
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE, bar.width = 0.25)
+### bar width. Example (4) with bar.width = 0 -> no space between sets of grouped bars
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, y.include.zero = TRUE, bar.width = 1)
+### error bars
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD.TOP")
+### whisker width. Example (1) with error.whisker.width = 1 -> whiskers have the width of the corresponding bar
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 1)
+### whisker width. Example (2) error bars with no whiskers
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 0)
+### tidy dot distribution. Example (1)
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.bin.nb = 100)
+### tidy dot distribution. Example (2) reducing the dot size with dot.bin.nb
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = TRUE, dot.bin.nb = 150)
+### dot jitter. Example (1)
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "same", dot.tidy = FALSE, dot.jitter = 1, dot.size = 2)
+### dot jitter. Example (2) with dot.jitter = 1 -> dispersion around the corresponding bar width
+# obs1 <- data.frame(Time = 1:1000, Group1 = rep(c("G", "H"), times = 500), Group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 1)
+### dot jitter. Example (3) with no dispersion
+# obs1 <- data.frame(Time = 1:100, Group1 = rep(c("G", "H"), times = 50), Group2 = rep(LETTERS[1:5], each = 20)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 0)
+### dot size, dot border size and dot transparency
+# obs1 <- data.frame(Time = 1:100, Group1 = rep(c("G", "H"), times = 50), Group2 = rep(LETTERS[1:5], each = 20)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), dot.color = "grey", dot.size = 4, dot.border.size = 0, dot.alpha = 0.6)
+### y-axis limits. Example (1)
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylim = c(-1, 25))
+### y-axis limits. Example (2) showing that order matters in ylim argument
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylim = c(25, -1))
+### log scale. Example (1). BEWARE: y column must be log, otherwise incoherent scale (see below warning message with the return argument)
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10")
+### log scale. Example (2). BEWARE: values of the ylim must be in the corresponding log
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", ylim = c(1,4))
+### tick number. Example (1)
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.tick.nb = 10)
+### tick number. Example (2) using a log2 scale
+# obs1 <- data.frame(Time = log2((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log2", y.tick.nb = 10, ylim = c(1, 16))
+### tick number. Example (3) using a log10 scale
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.tick.nb = 10)
+### tick number. Example (4) using a log10 scale: the reverse y-axis correctly deal with log10 scale
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.tick.nb = 10, ylim = c(4, 1))
+### secondary tick number. Example (1)
+# obs1 <- data.frame(Time = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.inter.tick.nb = 2)
+### secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", y.inter.tick.nb = 2)
+### include zero in the y-axis
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.include.zero = TRUE)
+### extra margins. To avoid dot cuts
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.25, y.bottom.extra.margin = 0.25)
+### mean diplay. Example (1) at the top of the plot region
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.1, stat.disp = "top", stat.size = 4, stat.dist = 2)
+### mean diplay. Example (2) above bars
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.top.extra.margin = 0.1, stat.disp = "above", stat.size = 4, stat.dist = 2)
+### bar orientation.  Example (1) without log scale, showing that the other arguments are still operational
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), y.tick.nb = 10, y.inter.tick.nb = 2, y.include.zero = TRUE, vertical = FALSE)
+### bar orientation. Example (2) with log scale. Horizontal orientation is blocked with log2 and log10 scales because of a bug in ggplot2 (https://github.com/tidyverse/ggplot2/issues/881)
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", vertical = FALSE)
+### classic representation (use grid = TRUE to display the background lines of the y axis ticks)
+# obs1 <- data.frame(Time = (1:20), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), classic = TRUE, grid = FALSE)
+### graphic info. Example (1)
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), return = TRUE)
+### graphic info. Example (2) of assignation and warning message display
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; warn <- fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), ylog = "log10", return = TRUE) ; cat(warn$warnings)
+### add ggplot2 functions
+# obs1 <- data.frame(Time = log10((1:20) * 100), Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "Time", categ = c("Group1", "Group2"), add = "+ggplot2::theme_classic()")
+### all the arguments
+# obs1 <- data.frame(x = 1:20, Group1 = rep(c("G", "H"), times = 10), Group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "x", categ = c("Group1", "Group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "", categ.color = c("red", "blue"), bar.width = 0.25, error.disp = "SD", error.whisker.width = 0.8, dot.color = "grey", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 1, dot.size = 4, dot.border.size = 0, dot.alpha = 1, ylim = c(0, 25), ylog = "no", y.tick.nb = NULL, y.inter.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0, stat.disp = "above", stat.size = 4, stat.dist = 2, xlab = "GROUP", ylab = "MEAN", vertical = FALSE, text.size = 12, title = "", title.text.size = 8, text.angle = 45, classic = TRUE, grid = TRUE, return = TRUE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
+# DEBUGGING
+# data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("brown", "orange"), each = 10)) ; data1[2:3, 1] <- NA ; data1[7:8, 2] <- NA ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A")) ; categ.legend.name = NULL ; categ.color = na.omit(data1)$bar.color ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = FALSE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = NULL ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# data1 <-data.frame(a = rep(1:20, 5), group1 = rep(c("G", "H"), times = 50), group2 = rep(LETTERS[1:5], each = 20)) ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A", "E", "D", "C")) ; categ.legend.name = NULL ; categ.color = NULL ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = NULL ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10), bar.color = rep(c("brown", "orange"), each = 10)) ; data1[2:3, 1] <- NA ; data1[7:8, 2] <- NA ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; categ.class.order = list(L1 = NULL, L2 = c("B", "A")) ; categ.legend.name = NULL ; categ.color = na.omit(data1)$bar.color ; bar.width = 0.5 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 30 ; dot.jitter = 0.25 ; dot.size = 3 ; dot.border.size = 0.5 ; dot.alpha = 1 ; ylim = NULL ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 2 ; xlab = NULL ; ylab = NULL ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = 0 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# set.seed(1) ; data1 <- data.frame(a = c(rnorm(25, 0), rnorm(25, -10), rnorm(25, 10), rnorm(25, 20)), group1 = rep(c("G", "H"), times = 50), group2 = rep(c("A", "B", "C", "D"), each = 25)) ; set.seed(NULL) ; y = "Time" ; categ = c("group1", "group2") ; categ.class.order = list(NULL, c("B", "A", "D", "C")) ; categ.legend.name = "LEGEND" ; categ.color = NULL ; bar.width = 0.8 ; error.disp = "SD" ; error.whisker.width = 0.5 ; dot.color = "same" ; dot.tidy = TRUE ; dot.bin.nb = 60 ; dot.jitter = 0.25 ; dot.size = 3.5 ; dot.border.size = 0 ; dot.alpha = 1 ; ylim= c(-15, 25) ; ylog = "no" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = "no" ; y.top.extra.margin = 0.05 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 2 ; xlab = "GROUP" ; ylab = "MEAN" ; vertical = FALSE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = -200 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# set.seed(1) ; data1 <- data.frame(x = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; set.seed(NULL) ; y = "x" ; categ <- c("group1", "group2") ; categ.class.order = list(NULL, c("B", "A", "D", "C", "E")) ; categ.legend.name = "LEGEND" ; categ.color = NULL ; bar.width = 0.8 ; error.disp = "SD" ; error.whisker.width = 1 ; dot.color = NULL ; dot.tidy = FALSE ; dot.bin.nb = 60 ; dot.jitter = 0.25 ; dot.size = 3.5 ; dot.border.size = 0.2 ; dot.alpha = 1 ; ylim= c(1, 4) ; ylog = "log10" ; y.tick.nb = NULL ; y.inter.tick.nb = NULL ; y.include.zero = FALSE ; y.top.extra.margin = 0 ; y.bottom.extra.margin = 0 ; stat.disp = "above" ; stat.size = 4 ; stat.dist = 1 ; xlab = "GROUP" ; ylab = "MEAN" ; vertical = TRUE ; text.size = 12 ; title = "" ; title.text.size = 8 ; text.angle = -200 ; classic = FALSE ; grid = FALSE ; return = FALSE; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_2d_comp", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_2d_comp() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_gg_just", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_just() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_gg_palette", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_name_change", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_name_change() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_round", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_round() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_scale", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_scale() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# reserved words to avoid bugs (used in this function)
+reserved.words <- c("categ.check", "categ.color", "dot.color", "dot.max", "dot.min", "ERROR.INF", "ERROR.SUP", "group", "group.check", "max.dot.error", "MEAN", "min.dot.error", "SD", "SEM", "tempo.categ1", "tempo.categ2", "text.max.pos", "text.min.pos", "x", "x.y", "y", "y.check", "y_from.dot.max", "ymax")
+# end reserved words to avoid bugs (used in this function)
+# argument checking (and modification for proper color management)
+warning <- NULL
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & any(duplicated(names(data1)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = y, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (y %in% names(data1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE){
+tempo <- fun_check(data = data1[, y], data.name = "y COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = categ, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & length(categ) > 2){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT CANNOT HAVE MORE THAN 2 COLUMN NAMES OF data1\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! all(categ %in% names(data1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ ARGUMENT MUST BE COLUMN NAMES OF data1. HERE IT IS:\n", paste(categ, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+# reserved word checking
+if(any(names(data1) %in% reserved.words)){
+if(any(duplicated(names(data1)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DUPLICATED COLUMN NAMES OF data1 ARGUMENT NOT ALLOWED:\n", paste(names(data1)[duplicated(names(data1))], collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo.output <- fun_name_change(names(data1), reserved.words)
+for(i3 in 1:length(tempo.output$ini)){ # a loop to be sure to take the good ones
+names(data1)[names(data1) == tempo.output$ini[i3]] <- tempo.output$post[i3]
+if(any(y == tempo.output$ini[i3])){
+y[y == tempo.output$ini[i3]] <- tempo.output$post[i3]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN y ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i3], " HAS BEEN REPLACED BY ", tempo.output$post[i3], "\nBECAUSE RISK OF BUG AS SOME NAMES IN y ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if(any(categ == tempo.output$ini[i3])){
+categ[categ == tempo.output$ini[i3]] <- tempo.output$post[i3]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ ARGUMENT (COLUMN NAMES OF data1 ARGUMENT),\n", tempo.output$ini[i3], " HAS BEEN REPLACED BY ", tempo.output$post[i3], "\nBECAUSE RISK OF BUG AS SOME NAMES IN categ ARGUMENT ARE RESERVED WORD USED BY THE ", function.name, " FUNCTION")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": REGARDING COLUMN NAMES REPLACEMENT, THE NAMES\n", paste(tempo.output$ini, collapse = " "), "\nHAVE BEEN REPLACED BY\n", paste(tempo.output$post, collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end reserved word checking
+# na detection and removal (done now to be sure of the correct length of categ)
+if(any(is.na(data1[, c(y, categ)]))){
+removed.row.nb <- unlist(lapply(lapply(c(data1[c(y, categ)]), FUN = is.na), FUN = which))
+removed.rows <- data1[removed.row.nb, ]
+data1 <- data1[-removed.row.nb, ]
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA DETECTED IN COLUMN ", paste(c(y, categ), collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $removed.row.nb AND $removed.rows)")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+removed.row.nb <- NULL
+removed.rows <- NULL
+}
+# end na detection and removal (done now to be sure of the correct length of categ)
+for(i1 in 1:length(categ)){
+if(any(is.na(data1[, categ[i1]]))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ NUMBER ", i1, " IN data1, THE CATEGORY COLUMN ", categ[i1], " CONTAINS NA")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo1 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_check(data = data1[, categ[i1]], data.name = paste0("categ NUMBER ", i1, " OF data1"), class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ", paste0("categ NUMBER ", i1, " OF data1"), " MUST BE A FACTOR OR CHARACTER VECTOR\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo1$problem == FALSE){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN categ NUMBER ", i1, " IN data1, THE CHARACTER COLUMN HAS BEEN CONVERTED TO FACTOR")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+data1[, categ[i1]] <- factor(data1[, categ[i1]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+}
+if( ! is.null(categ.class.order)){
+tempo <- fun_check(data = categ.class.order, class = "list", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & length(categ.class.order) > 2){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.class.order ARGUMENT MUST BE A LIST OF MAX LENGTH 2\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE){
+for(i3 in 1:length(categ.class.order)){
+if(is.null(categ.class.order[[i3]])){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE categ.class.order COMPARTMENT ", i3, " IS NULL. ALPHABETICAL ORDER WILL BE APPLIED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+data1[, categ[i3]] <- factor(as.character(data1[, categ[i3]])) # if already a factor, change nothing, if characters, levels according to alphabetical order
+}else if(any(duplicated(categ.class.order[[i3]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COMPARTMENT ", i3, " OF categ.class.order ARGUMENT CANNOT HAVE DUPLICATED CLASSES: ", paste(categ.class.order[[i3]], collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if( ! (all(categ.class.order[[i3]] %in% unique(data1[, categ[i3]])) & all(unique(data1[, categ[i3]]) %in% categ.class.order[[i3]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": COMPARTMENT ", i3, " OF categ.class.order ARGUMENT MUST BE CLASSES OF ELEMENT ", i3, " OF categ\nHERE IT IS:\nCOMPARTMENT ", i3, " OF categ.class.order:", paste(categ.class.order[[i3]], collapse = " "), "\nCOLUMN ", categ[i3], " OF data1: ", paste( unique(data1[, categ[i3]]), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{
+data1[, categ[i3]] <- factor(data1[, categ[i3]], levels = categ.class.order[[i3]]) # reorder the factor
+
+}
+}
+}
+}
+if( ! is.null(categ.legend.name)){
+tempo <- fun_check(data = categ.legend.name, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+}else{
+categ.legend.name <- categ[length(categ)] # if only categ1, then legend name of categ1, if length(categ) == 2, then legend name of categ2
+}
+if( ! is.null(categ.color)){
+# check the nature of color
+tempo1 <- fun_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_check(data = categ.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+# integer colors into gg_palette
+tempo.check.color <- fun_check(data = categ.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem
+if(tempo.check.color == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{ # convert integers into colors
+categ.color <- fun_gg_palette(max(categ.color, na.rm = TRUE))
+}
+# end integer colors into gg_palette
+}
+if( ! (all(categ.color %in% colors() | grepl(pattern = "^#", categ.color)))){ # check that all strings of low.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors(): ", paste(unique(categ.color), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if(any(is.na(categ.color))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT CONTAINS NA")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end check the nature of color
+# check the length of color
+# No problem of NA management by ggplot2 because already removed
+i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
+if(length(categ.color) == length(unique(data1[, categ[i0]]))){ # here length(categ.color) is equal to the different number of categ
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+data1 <- data.frame(data1, categ.color = data1[, categ[i0]])
+levels(data1$categ.color) <- categ.color
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", categ[i0], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(categ.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(length(categ.color) == length(data1[, categ[i0]])){# here length(categ.color) is equal to nrow(data1) -> Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[i0]])))
+data1 <- data.frame(data1, categ.color = categ.color)
+tempo.check <- unique(data1[ , c(categ[i0], "categ.color")])
+if( ! (nrow(tempo.check) == length(unique(categ.color)) & nrow(tempo.check) == length(unique(data1[ , categ[i0]])))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nBUT IS INCORRECTLY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], ":\n", paste(unique(mapply(FUN = "paste", data1[ ,categ[i0]], data1[ ,"categ.color"])), collapse = "\n"), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+categ.color <- unique(categ.color[order(data1[, categ[i0]])]) # Modif to have length(categ.color) equal to the different number of categ (length(categ.color) == length(levels(data1[, categ[i0]])))
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT HAS THE LENGTH OF data1 ROW NUMBER\nCOLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], " AS:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\n", paste(categ.color, collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}else if(length(categ.color) == 1){
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+data1 <- data.frame(data1, categ.color = categ.color)
+categ.color <- rep(categ.color, length(levels(data1[, categ[i0]])))
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": categ.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[i0], "\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(categ.color, collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": categ.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[i0], " COLUMN. HERE IT IS COLOR LENGTH ", length(categ.color), " VERSUS CATEG LENGTH ", length(data1[, categ[i0]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[i0]])), "\nPRESENCE OF NA COULD BE THE PROBLEM\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}else{
+i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+categ.color <- fun_gg_palette(length(levels(data1[, categ[i0]])))
+data1 <- data.frame(data1, categ.color = data1[, categ[i0]])
+levels(data1$categ.color) <- categ.color
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NULL categ.color ARGUMENT -> COLORS RESPECTIVELY ATTRIBUTED TO EACH CLASS OF ", categ[i0], " IN data1:\n", paste(categ.color, collapse = " "), "\n", paste(levels(data1[, categ[i0]]), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo <- fun_check(data = bar.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(error.disp)){
+tempo <- fun_check(data = error.disp, options = c("SD", "SD.TOP", "SEM", "SEM.TOP"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = error.whisker.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(dot.color)){
+# check the nature of color
+tempo1 <- fun_check(data = dot.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_check(data = dot.color, class = "factor", na.contain = TRUE, fun.name = function.name, print = FALSE)
+if(tempo1$problem == TRUE & tempo2$problem == TRUE){
+# integer colors into gg_palette
+tempo.check.color <- fun_check(data = dot.color, class = "integer", double.as.integer.allowed = TRUE, na.contain = TRUE, fun.name = function.name, print = FALSE)$problem
+if(tempo.check.color == TRUE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color MUST BE A FACTOR OR CHARACTER VECTOR OR INTEGER VECTOR\n\n================\n\n") # integer possible because dealt above
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else{ # convert integers into colors
+dot.color <- fun_gg_palette(max(dot.color, na.rm = TRUE))
+}
+# end integer colors into gg_palette
+}
+if(all(dot.color == "same") & length(dot.color) == 1){
+dot.color <- categ.color # same color of the dots as the corresponding bar color
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT HAS BEEN SET TO \"SAME\"\nTHUS, DOT COLORS HAVE BEEN RESPECTIVELY ASSOCIATED TO EACH CLASS OF categ ", categ[i0], " AS:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\n", paste(levels(factor(dot.color)), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if( ! (all(dot.color %in% colors() | grepl(pattern = "^#", dot.color)))){ # check that all strings of low.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color ARGUMENT MUST BE (1) A HEXADECIMAL COLOR VECTOR STARTING BY #, OR (2) COLOR NAMES GIVEN BY colors(), OR (3) INTEGERS, OR THE STRING\"same\"\nHERE IT IS: ", paste(unique(dot.color), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if(any(is.na(dot.color))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT CONTAINS NA")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end check the nature of color
+# check the length of color
+# No problem of NA management by ggplot2 because already removed
+i0 <- length(categ) # if only categ1, then colors for classes of categ1, if length(categ) == 2, then colors for classes of categ2
+if(length(dot.color) == length(unique(data1[, categ[i0]]))){ # here length(dot.color) is equal to the different number of categ
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+data1 <- data.frame(data1, dot.color = data1[, categ[i0]])
+levels(data1$dot.color) <- dot.color
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": IN ", categ[i0], " OF categ ARGUMENT, THE FOLLOWING COLORS:\n", paste(dot.color, collapse = " "), "\nHAVE BEEN ATTRIBUTED TO THESE CLASSES:\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(length(dot.color) == length(data1[, categ[i0]])){# here length(dot.color) is equal to nrow(data1) -> Modif to have length(dot.color) equal to the different number of categ (length(dot.color) == length(levels(data1[, categ[i0]])))
+data1 <- data.frame(data1, dot.color = dot.color)
+}else if(length(dot.color) == 1 & ! all(dot.color == "same")){
+data1[, categ[i0]] <- factor(data1[, categ[i0]]) # if already a factor, change nothing, if characters, levels according to alphabetical order
+data1 <- data.frame(data1, dot.color = dot.color)
+dot.color <- rep(dot.color, length(levels(data1[, categ[i0]])))
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": dot.color ARGUMENT HAS LENGTH 1, MEANING THAT ALL THE DIFFERENT CLASSES OF ", categ[i0], "\n", paste(levels(factor(data1[, categ[i0]])), collapse = " "), "\nWILL HAVE THE SAME COLOR\n", paste(dot.color, collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": dot.color ARGUMENT MUST BE (1) LENGTH 1, OR (2) THE LENGTH OF data1 NROWS, OR (3) THE LENGTH OF THE CLASSES IN THE categ ", categ[i0], " COLUMN. HERE IT IS COLOR LENGTH ", length(dot.color), " VERSUS CATEG LENGTH ", length(data1[, categ[i0]]), " AND CATEG CLASS LENGTH ", length(unique(data1[, categ[i0]])), "\nPRESENCE OF NA COULD BE THE PROBLEM\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = dot.tidy, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dot.bin.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dot.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(ylim)){
+tempo <- fun_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & any(ylim %in% c(Inf, -Inf))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
+
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = ylog, options = c("no", "log2", "log10"), length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ylog != "no"){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, ".\nVALUES FROM THE y ARGUMENT COLUMN OF THE data1 DATA FRAME MUST BE ALREADY ", toupper(ylog), " TRANSFORMED, AS THE ylog ARGUMENT JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+if( ! is.null(ylim)){
+if(any(ylim <= 0)){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylim ARGUMENT CAN SPAN ZERO OR NEGATIVE VALUES IF ylog ARGUMENT IS SET TO ", ylog, " BECAUSE THIS LATTER ARGUMENT DOES NOT TRANSFORM DATA, JUST MODIFIES THE AXIS SCALE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(any( ! is.finite(if(ylog == "log10"){10^ylim}else{2^ylim}))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ylim ARGUMENT RETURNS INF WITH THE ylog ARGUMENT SET TO ", ylog, "\nAS SCALE COMPUTATION IS ", ifelse(ylog == "log10", 10, 2), "^ylim:\n", paste(ifelse(ylog == "log10", 10, 2)^ylim, collapse = " "), "\nARE YOU SURE THAT ylim ARGUMENT HAS BEEN SPECIFIED WITH VALUES ALREADY IN LOG SCALE?\n", paste(ylim, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+}
+if( ! is.null(y.tick.nb)){
+tempo <- fun_check(data = y.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(y.inter.tick.nb)){
+tempo <- fun_check(data = y.inter.tick.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.inter.tick.nb < 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": y.inter.tick.nb ARGUMENT MUST BE A NON NULL POSITIVE INTEGER\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+# inactivated because xlim and ylim already log transformed
+# if(tempo$problem == FALSE & ylog != "no" & y.include.zero == TRUE){
+# tempo.warning <- paste0("FROM FUNCTION ", function.name, ": ylog ARGUMENT SET TO ", ylog, " AND y.include.zero ARGUMENT SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE BECAUSE NO 0 ALLOWED IN LOG SCALE")
+# warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+# }
+tempo <- fun_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(stat.disp)){
+tempo <- fun_check(data = stat.disp, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = stat.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = stat.dist, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(xlab)){
+if(all(class(xlab) %in% "expression")){ # to deal with math symbols
+tempo <- fun_check(data = xlab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+}else{
+tempo <- fun_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+}
+if( ! is.null(ylab)){
+if(all(class(ylab) %in% "expression")){ # to deal with math symbols
+tempo <- fun_check(data = ylab, class = "expression", length = 1, fun.name = function.name) ; eval(ee)
+}else{
+tempo <- fun_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+}
+tempo <- fun_check(data = vertical, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ylog != "no" & vertical == FALSE){
+vertical <- TRUE
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": BECAUSE OF A BUG IN ggplot2, CANNOT FLIP BARS HORIZONTALLY WITH A YLOG SCALE -> vertical ARGUMENT RESET TO TRUE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = text.angle, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, neg.values = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(add)){
+tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string  finished by )
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking (and modification for proper color management)
+# package checking
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+fun_pack(req.package = c("scales"), path.lib = path.lib)
+# end package checking
+# main code
+if(length(categ) == 1){
+# new data frames for bar and error bars
+mean.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <-categ[1] ; x.env}, FUN = mean, na.rm = TRUE)
+sd.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <-categ[1] ; x.env}, FUN = sd, na.rm = TRUE)
+nb.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]]) ; names(x.env) <- categ[1] ; x.env}, FUN = function(x.env2){length(x.env2[ ! is.na(x.env2)])})
+if( ! all(identical(mean.dataframe[, categ[1]], sd.dataframe[, categ[1]]) & identical(mean.dataframe[, categ[1]], nb.dataframe[, categ[1]]))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": aggregate OUTPUT IS DIFFERENT IN TERM OF CLASS ORDER FOR mean.dataframe, sd.dataframe AND nb.dataframe. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}else{
+sem.dataframe <- sd.dataframe
+sem.dataframe[, y] <- sd.dataframe[, y] / (nb.dataframe[, y])^0.5
+}
+# end new data frames for bar and error bars
+# data1 check categ order for dots coordinates recovery
+data1 <- data.frame(data1, categ.check = data1[, categ[1]])
+data1$categ.check <- as.integer(data1$categ.check) # to check that data1[, categ[1]] and dot.coord$group are similar, during merging
+# end data1 check categ order for dots coordinates recovery
+# per bar dots coordinates recovery
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[1]))) # fill because this is what is used with geom_bar
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(stroke = dot.border.size, size = dot.size, alpha = dot.alpha, pch = 21))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot()) # to easily have the equivalent of the grouped bars
+dot.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]]
+if( ! is.null(dot.color)){
+dot.coord <- data.frame(dot.coord[order(dot.coord$group, dot.coord$y), ], y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], dot.color = data1[order(data1$categ.check, data1[, y]), "dot.color"], tempo.categ1 = data1[order(data1$categ.check, data1[, y]), categ[1]]) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
+names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
+if( ! identical(dot.coord$y, dot.coord$y.check)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": (dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end per bar dots coordinates recovery
+}else if(length(categ) == 2){
+# new data frames for bar and error bars
+mean.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = mean, na.rm = TRUE)
+sd.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = sd, na.rm = TRUE)
+nb.dataframe <- aggregate(x = data1[y], by = {x.env <- list(data1[, categ[1]], data1[, categ[2]]) ; names(x.env) <- c(categ[1], categ[2]) ; x.env}, FUN = function(x.env2){length(x.env2[ ! is.na(x.env2)])})
+tempo.check.mean <- mapply(FUN = "paste", mean.dataframe[, categ[1]], mean.dataframe[, categ[2]], sep = "_")
+tempo.check.sd <- mapply(FUN = "paste", sd.dataframe[, categ[1]], sd.dataframe[, categ[2]], sep = "_")
+tempo.check.nb <- mapply(FUN = "paste", nb.dataframe[, categ[1]], nb.dataframe[, categ[2]], sep = "_")
+if( ! all(identical(tempo.check.mean, tempo.check.sd) & identical(tempo.check.mean, tempo.check.nb))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": aggregate OUTPUT IS DIFFERENT IN TERM OF CLASS ORDER FOR mean.dataframe, sd.dataframe AND nb.dataframe. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}else{
+sem.dataframe <- sd.dataframe
+sem.dataframe[, y] <- sd.dataframe[, y] / (nb.dataframe[, y])^0.5
+}
+# end new data frames for bar and error bars
+# data1 check categ order for dots coordinates recovery
+tempo.factor <- paste0(data1[order(data1[, categ[2]], data1[, categ[1]]), categ[2]], "_", data1[order(data1[, categ[2]], data1[, categ[1]]), categ[1]])
+data1 <- data.frame(data1[order(data1[, categ[2]], data1[, categ[1]]), ], categ.check = factor(tempo.factor, levels = unique(tempo.factor)))
+data1$categ.check <- as.integer(data1$categ.check)
+# end data1 check categ order for dots coordinates recovery
+# per bar dots coordinates recovery
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot(data = data1, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[2]))) # fill because this is what is used with geom_bar
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(stroke = dot.border.size, size = dot.size, alpha = dot.alpha, pch = 21))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_boxplot()) # to easily have the equivalent of the grouped bars
+dot.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]]
+if( ! is.null(dot.color)){
+dot.coord <- data.frame(dot.coord[order(dot.coord$group, dot.coord$y), ], y.check = as.double(data1[order(data1$categ.check, data1[, y]), y]), categ.check = data1[order(data1$categ.check, data1[, y]), "categ.check"], dot.color = data1[order(data1$categ.check, data1[, y]), "dot.color"], tempo.categ1 = data1[order(data1$categ.check, data1[, y]), categ[1]], tempo.categ2 = data1[order(data1$categ.check, data1[, y]), categ[2]]) # y.check to be sure that the order is the same between the y of data1 and the y of dot.coord
+names(dot.coord)[names(dot.coord) == "tempo.categ1"] <- categ[1]
+names(dot.coord)[names(dot.coord) == "tempo.categ2"] <- categ[2]
+if( ! (identical(dot.coord$y, dot.coord$y.check) & identical(dot.coord$group, dot.coord$categ.check))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": (dot.coord$y AND dot.coord$y.check) AS WELL AS (dot.coord$group AND dot.coord$categ.check) MUST BE IDENTICAL. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
+stop(tempo.cat)
+}
+data2 <- mean.dataframe
+if( ! is.null(error.disp)){
+if(error.disp == "SD"){
+data2 <- data.frame(data2, SD = sd.dataframe[, y], ERROR.INF = mean.dataframe[, y] - sd.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sd.dataframe[, y])
+}else if(error.disp == "SD.TOP"){
+data2 <- data.frame(data2, SD = sd.dataframe[, y], ERROR.INF = mean.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sd.dataframe[, y])
+}else if(error.disp == "SEM"){
+data2 <- data.frame(data2, SEM = sem.dataframe[, y], ERROR.INF = mean.dataframe[, y] - sem.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sem.dataframe[, y])
+}else if(error.disp == "SEM.TOP"){
+data2 <- data.frame(data2, SEM = sem.dataframe[, y], ERROR.INF = mean.dataframe[, y], ERROR.SUP = mean.dataframe[, y] + sem.dataframe[, y])
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# stat output
+stat <- data2
+names(stat)[names(stat) == y] <- "MEAN"
+# end stat output
+# range depending on means and error bars
+if(is.null(ylim)){
+if(is.null(dot.color)){ # no dots plotted
+if( ! is.null(error.disp)){
+if(any(c(data2[, "ERROR.INF"], data2[, "ERROR.SUP"]) %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE ERROR.INF OR ERROR.SUP COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+ylim <- range(c(data2[, "ERROR.INF"], data2[, "ERROR.SUP"]), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}else{
+if(any(data2[, y] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+ylim <- range(data2[, y], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+}else{
+if(any(data1[, y] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+ylim <- range(data1[, y], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+}
+if(suppressWarnings(all(ylim %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED YLIM CONTAINS Inf VALUES, BECAUSE VALUES FROM data2 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+# end range depending on means and error bars
+ylim.order <- order(ylim) # to deal with inverse axis
+ylim <- sort(ylim)
+ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.bottom.extra.margin, y.top.extra.margin) # diff(ylim.order) > 0 means not inversed axis
+ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * ifelse(diff(ylim.order) > 0, y.top.extra.margin, y.bottom.extra.margin) # diff(ylim.order) > 0 means not inversed axis
+if(y.include.zero == TRUE){ # no need to check ylog != "no" because done before
+ylim <- range(c(ylim, 0), na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+ylim <- ylim[ylim.order]
+if(any(is.na(ylim))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
+stop(tempo.cat)
+}
+# width commputations
+if(length(categ) == 2){
+bar.width2 <- bar.width / length(unique(data1[, categ[length(categ)]])) # real width of each bar in x-axis unit, among the set of grouped bar. Not relevant if no grouped bars length(categ) == 1
+}else if(length(categ) == 1){
+bar.width2 <- bar.width
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
+stop(tempo.cat)
+}
+error.whisker.width <- bar.width * error.whisker.width # real error bar width
+dot.jitter <- bar.width2 * dot.jitter # real dot.jitter
+# end width commputations
+# barplot
+# constant part
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::xlab(if(is.null(xlab)){categ[1]}else{xlab}))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ylab(if(is.null(ylab)){y}else{ylab}))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+# text angle management
+tempo.just <- fun_gg_just(angle = text.angle, axis = ifelse(vertical == TRUE, "x", "y"))
+# end text angle management
+add.check <- TRUE
+if( ! is.null(add)){ # if add is NULL, then = 0
+if(grepl(pattern = "ggplot2::theme", add) == TRUE){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+add.check <- FALSE
+}
+}
+if(add.check == TRUE & classic == TRUE){
+# BEWARE: not possible to add several times theme(). NO message but the last one overwrites the others
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+if(grid == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), # draw lines for the y axis
+axis.line.x.bottom = ggplot2::element_line(colour = "black"), # draw lines for the x axis
+panel.grid.major.x = if(vertical == TRUE){NULL}else{ggplot2::element_line(colour = "grey75")},
+panel.grid.major.y = if(vertical == TRUE){ggplot2::element_line(colour = "grey75")}else{NULL},
+axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
+axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
+))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), 
+axis.line.x.bottom = ggplot2::element_line(colour = "black"),
+axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
+axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
+))
+}
+}else if(add.check == TRUE & classic == FALSE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_line(size = 0.5), 
+panel.background = ggplot2::element_rect(fill = "grey95"), 
+axis.line.y.left = ggplot2::element_line(colour = "black"), 
+axis.line.x.bottom = ggplot2::element_line(colour = "black"), 
+panel.grid.major.x = ggplot2::element_line(colour = "grey75"), 
+panel.grid.major.y = ggplot2::element_line(colour = "grey75"), 
+panel.grid.minor.x = ggplot2::element_blank(), 
+panel.grid.minor.y = ggplot2::element_blank(), 
+strip.background = ggplot2::element_rect(fill = "white", colour = "black"),
+axis.text.x = if(vertical == TRUE){ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}else{NULL},
+axis.text.y = if(vertical == TRUE){NULL}else{ggplot2::element_text(angle = tempo.just$angle, hjust = tempo.just$hjust, vjust = tempo.just$vjust)}
+))
+}
+# end constant part
+# barplot and error bars
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_bar(data = data2, mapping = ggplot2::aes_string(x = categ[1], y = y, fill = categ[length(categ)]), stat = "identity", position = ggplot2::position_dodge(width = NULL), color = "black", width = bar.width)) # stat = "identity" because already counted, position = position_dodge(width = NULL) for grouped bars (width = NULL means no overlap between grouped bars). Please, see explanation in https://stackoverflow.com/questions/34889766/what-is-the-width-argument-in-position-dodge/35102486#35102486
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "fill", name = categ.legend.name, values = as.character(categ.color), guide = ggplot2::guide_legend(override.aes = list(fill = categ.color)))) # values are the values of color (which is the border color in geom_bar. BEWARE: values = categ.color takes the numbers to make the colors if categ.color is a factor
+if( ! is.null(error.disp)){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_errorbar(data = data2, mapping = ggplot2::aes_string(x = categ[1], group = categ[length(categ)], ymin = "ERROR.INF", ymax = "ERROR.SUP"), position = ggplot2::position_dodge(width = bar.width), color = "black", width = error.whisker.width)) # cannot use fill = categ[length(categ)] because not an aesthetic of geom_errorbar, but if only x = categ[1], wrong x coordinates with grouped bars
+}
+# end barplot and error bars
+# coordinates management (for random plotting and for stat display)
+# bars
+bar.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data[[1]] # to have the summary statistics of the plot. Here because can be required for stat.disp when just bar are plotted
+# end bars
+if( ! is.null(dot.color)){
+# random dots
+if(dot.tidy == FALSE){
+dot.coord.rd1 <- merge(dot.coord, bar.coord[c("fill", "group", "x")], by = intersect("group", "group"), sort = FALSE) # rd for random. Send the coord of the bars into the coord data.frame of the dots (in the column x.y). BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
+if(nrow(dot.coord.rd1) != nrow(dot.coord)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd1 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+set.seed(1)
+sampled.dot.jitter <- if(nrow(dot.coord.rd1) == 1){runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2)}else{sample(x = runif(n = nrow(dot.coord.rd1), min = - dot.jitter / 2, max = dot.jitter / 2), size = nrow(dot.coord.rd1), replace = FALSE)}
+dot.coord.rd2 <- data.frame(dot.coord.rd1, dot.x = dot.coord.rd1$x.y + sampled.dot.jitter) # set the dot.jitter thanks to runif and dot.jitter range. Then, send the coord of the bars into the coord data.frame of the dots (in the column x.y)
+set.seed(NULL)
+if(length(categ) == 1){
+tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+verif <- paste0(categ[1], ".check")
+}else if(length(categ) == 2){
+tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
+verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
+stop(tempo.cat)
+}
+dot.coord.rd3 <- merge(dot.coord.rd2, tempo.data1, by = "group", sort = FALSE) # send the factors of data1 into coord
+if(nrow(dot.coord.rd3) != nrow(dot.coord) | ( ! fun_2d_comp(dot.coord.rd3[categ], dot.coord.rd3[verif])$identical.content)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.rd3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+# end random dots
+}
+# tidy dots
+# coordinates are recover during plotting (see dot.coord.tidy1 below)
+# end tidy dots
+}
+# end coordinates management (for random plotting and for stat display)
+# dot display
+if( ! is.null(dot.color)){
+if(dot.tidy == FALSE){
+if(dot.border.size == 0){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = dot.coord.rd3, mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), size = dot.size, color = dot.coord.rd3$dot.color, alpha = dot.alpha, pch = 16)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_point(data = dot.coord.rd3, mapping = ggplot2::aes_string(x = "dot.x", y = "y", group = categ[length(categ)]), stroke = dot.border.size, size = dot.size, fill = dot.coord.rd3$dot.color, alpha = dot.alpha, pch = 21)) # group used in aesthetic to do not have it in the legend. Here ggplot2::scale_discrete_manual() cannot be used because of the group easthetic
+}
+}else if(dot.tidy == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_dotplot(data = dot.coord, mapping = ggplot2::aes_string(x = categ[1], y = "y", color = categ[length(categ)]), position = ggplot2::position_dodge(width = bar.width), binaxis = "y", stackdir = "center", alpha = dot.alpha, fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"], show.legend = FALSE, binwidth = (ylim[2] - ylim[1]) / dot.bin.nb)) # very weird behavior of geom_dotplot, because data1 seems reorderer according to x = categ[1] before plotting. Thus, I have  to use fill = dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"] to have the good corresponding colors # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = categ.legend.name, values = if(dot.border.size == 0){as.character(levels(dot.coord[rev(order(dot.coord[, categ[1]], decreasing = TRUE)), "dot.color"]))}else{rep("black", length(categ.color))})) # values = rep("black", length(categ.color)) are the values of color (which is the border color of dots), and this modify the border color on the plot. BEWARE: values = categ.color takes the numbers to make the colors if categ.color is a factor. BEWARE: , guide = ggplot2::guide_legend(override.aes = list(fill = levels(dot.color))) here
+# coordinates of tidy dots
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$data # to have the tidy dot coordinates
+if(length(which(sapply(tempo.coord, FUN = nrow) == nrow(data1))) > 1){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MORE THAN 2 COMPARTMENT WITH NROW EQUAL TO nrow(data1) IN THE tempo.coord LIST (FOR TIDY DOT COORDINATES). CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}else{
+dot.coord.tidy1 <- tempo.coord[[which(sapply(tempo.coord, FUN = nrow) == nrow(data1))]]
+}
+tempo.bar.coord <- merge(bar.coord, unique(dot.coord[, c("group", categ)]), by = intersect("group", "group"), sort = FALSE) # add the categ in bar.coord. BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
+if(nrow(tempo.bar.coord) != nrow(bar.coord)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT tempo.bar.coord DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+dot.coord.tidy2 <- merge(dot.coord.tidy1, tempo.bar.coord[c("fill", "group", "x", categ)], by = intersect("group", "group"), sort = FALSE) # send the coord of the bars into the coord data.frame of the dots (in the column x.y). BEWARE: by = intersect("group", "group") because group is enough as only one value of x per group number in bar.coord. Thus, no need to consider fill
+if(nrow(dot.coord.tidy2) != nrow(dot.coord)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy2 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(categ) == 1){
+tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+verif <- paste0(categ[1], ".check")
+}else if(length(categ) == 2){
+tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
+verif <- c(paste0(categ[1], ".check"), paste0(categ[2], ".check"))
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n"))
+stop(tempo.cat)
+}
+dot.coord.tidy3 <- merge(dot.coord.tidy2, tempo.data1, by = "group", sort = FALSE) # send the factors of data1 into coord
+if(nrow(dot.coord.tidy3) != nrow(dot.coord) | ( ! fun_2d_comp(dot.coord.tidy3[categ], dot.coord.tidy3[verif])$identical.content)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE merge() FUNCTION DID NOT RETURN A CORRECT dot.coord.tidy3 DATA FRAME. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+# end coordinates of tidy dots
+}
+}
+# end dot display
+# stat display
+# layer after dots but ok, behind dots on the plot
+if( ! is.null(stat.disp)){
+if(stat.disp == "top"){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1),  ggplot2::annotate(geom = "text", x = bar.coord$x, y = ylim[2], label = fun_round(bar.coord$y, 2), size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 1.1), vjust = ifelse(vertical == TRUE, 1.1, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order. For justification, see https://stackoverflow.com/questions/7263849/what-do-hjust-and-vjust-do-when-making-a-plot-using-ggplot
+}else if(stat.disp == "above"){
+# stat coordinates
+if( ! is.null(dot.color)){ # for text just above max dot
+if(dot.tidy == FALSE){
+tempo.stat.ini <- dot.coord.rd3
+}else if(dot.tidy == TRUE){
+tempo.stat.ini <- dot.coord.tidy3
+}
+stat.coord1 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "x.y", categ[1], categ[2])} ; x.env}, FUN = min, na.rm = TRUE)
+names(stat.coord1)[names(stat.coord1) == "y"] <- "dot.min"
+stat.coord2 <- aggregate(x = tempo.stat.ini["y"], by = {x.env <- if(length(categ) == 1){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]])}else if(length(categ) == 2){list(tempo.stat.ini$group, tempo.stat.ini$x.y, tempo.stat.ini[, categ[1]], tempo.stat.ini[, categ[2]])} ; names(x.env) <- if(length(categ) == 1){c("group", "x.y", categ[1])}else if(length(categ) == 2){c("group", "x.y", categ[1], categ[2])} ; x.env}, FUN = max, na.rm = TRUE)
+names(stat.coord2) <- paste0(names(stat.coord2), "_from.dot.max")
+names(stat.coord2)[names(stat.coord2) == "y_from.dot.max"] <- "dot.max"
+stat.coord3 <- cbind(bar.coord[order(bar.coord$x), ], stat.coord1[order(stat.coord1$x.y), ], stat.coord2[order(stat.coord2$x.y), ]) # should be ok to use bar.coord$x and stat.coord$x.y to assemble the two data frames because x coordinates of the bars. Thus, we cannot have identical values
+if( ! all(identical(round(stat.coord3$x, 9), round(stat.coord3$x.y, 9)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": FUSION OF bar.coord, stat.coord1 AND stat.coord2 ACCORDING TO bar.coord$x, stat.coord1$x.y AND stat.coord2$x.y IS NOT CORRECT. CODE HAS TO BE MODIFIED\n\n================\n\n")
+stop(tempo.cat)
+}
+dot.text.coord <- stat.coord3[, c("x", "group", "dot.min", "dot.max")]
+names(dot.text.coord)[names(dot.text.coord) == "dot.min"] <- "text.min.pos"
+names(dot.text.coord)[names(dot.text.coord) == "dot.max"] <- "text.max.pos"
+}
+if( ! is.null(error.disp)){ # for text just above error bars
+if(length(categ) == 1){
+tempo.data1 <- unique(data.frame(data1[categ[1]], group = as.integer(factor(as.numeric(data1[, categ[1]]))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+if( ! identical(stat[order(stat[, categ[1]]), categ[1]], tempo.data1[order(tempo.data1[, categ[1]]), categ[1]])){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat AND tempo.data1\n\n============\n\n"))
+stop(tempo.cat)
+}else{
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+names(tempo.data1)[names(tempo.data1) == "group"] <- "group.check"
+stat.coord4 <- cbind(stat[order(stat[, categ[1]]), ], tempo.data1[order(tempo.data1[, paste0(categ[1], ".check")]), ])
+}
+}else if(length(categ) == 2){
+tempo.data1 <- unique(data.frame(data1[c(categ[1], categ[2])], group = as.integer(factor(paste0(as.numeric(data1[, categ[2]]), ".", as.numeric(data1[, categ[1]])))))) # categ[2] first if categ[2] is used to make the categories in ggplot and categ[1] is used to make the x-axis
+if( ! fun_2d_comp(stat[order(stat[, categ[1]], stat[, categ[2]]), c(categ[1], categ[2])], tempo.data1[order(tempo.data1[, categ[1]], tempo.data1[, categ[2]]), c(categ[1], categ[2])])$identical.content){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat AND tempo.data1\n\n============\n\n"))
+stop(tempo.cat)
+}else{
+names(tempo.data1)[names(tempo.data1) == categ[1]] <- paste0(categ[1], ".check")
+names(tempo.data1)[names(tempo.data1) == categ[2]] <- paste0(categ[2], ".check")
+names(tempo.data1)[names(tempo.data1) == "group"] <- "group.check"
+stat.coord4 <- cbind(stat[order(stat[, categ[1]], stat[, categ[2]]), ], tempo.data1[order(tempo.data1[, paste0(categ[1], ".check")], tempo.data1[,paste0(categ[2], ".check")]), ])
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 8\n\n============\n\n"))
+stop(tempo.cat)
+}
+if( ! identical(bar.coord$group[order(bar.coord$group)], stat.coord4$group.check[order(stat.coord4$group.check)])){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE bar.coord AND stat.coord4\n\n============\n\n"))
+stop(tempo.cat)
+}else{
+stat.coord5 <- cbind(bar.coord[order(bar.coord$group), ], stat.coord4[order(stat.coord4$group.check), ])
+error.text.coord <- stat.coord5[, c("x", "group", "ERROR.INF", "ERROR.SUP")] # 
+names(error.text.coord)[names(error.text.coord) == "ERROR.INF"] <- "text.min.pos"
+names(error.text.coord)[names(error.text.coord) == "ERROR.SUP"] <- "text.max.pos"
+}
+}
+if(( ! is.null(dot.color)) & ! is.null(error.disp)){ # for text above max dot or error bar
+stat.coord3 <- stat.coord3[order(stat.coord3$x), ]
+stat.coord5 <- stat.coord5[order(stat.coord5$x), ]
+if( ! identical(stat.coord3$group, stat.coord5$group)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE PROBLEM IN TRYING TO ASSEMBLE stat.coord3 AND stat.coord5\n\n============\n\n"))
+stop(tempo.cat)
+}else{
+stat.coord6 <- data.frame(stat.coord3, min.dot.error =  mapply(FUN = min, stat.coord3$dot.min, stat.coord5$ERROR.INF, na.rm = TRUE))
+stat.coord7 <- data.frame(stat.coord6, max.dot.error =  mapply(FUN = max, stat.coord3$dot.max, stat.coord5$ERROR.SUP, na.rm = TRUE))
+both.text.coord <- stat.coord7[, c("x", "group", "min.dot.error", "max.dot.error")] # 
+names(both.text.coord)[names(both.text.coord) == "min.dot.error"] <- "text.min.pos"
+names(both.text.coord)[names(both.text.coord) == "max.dot.error"] <- "text.max.pos"
+}
+}
+if(( ! is.null(dot.color)) & is.null(error.disp)){
+text.coord <- dot.text.coord
+}else if(is.null(dot.color) & ! is.null(error.disp)){
+text.coord <- error.text.coord
+}else if(( ! is.null(dot.color)) & ! is.null(error.disp)){
+text.coord <- both.text.coord
+}
+if( ! (is.null(dot.color) & is.null(error.disp))){
+bar.coord <- bar.coord[order(bar.coord$x), ]
+text.coord <- text.coord[order(text.coord$x), ] # to be sure to have the two objects in the same order for x. BEWARE: cannot add identical(as.integer(text.coord$group), as.integer(bar.coord$group)) because with error, the correspondence between x and group is not the same
+if( ! identical(text.coord$x, bar.coord$x)){
+tempo.cat <- (paste0("\n\n============\n\nERROR: text.coord AND bar.coord DO NOT HAVE THE SAME x COLUMN CONTENT\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end stat coordinates
+# stat display
+if(is.null(dot.color) & is.null(error.disp)){ # text just above bars
+# performed twice: first for y values >=0, then y values < 0, because only a single value allowed for hjust anf vjust
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = bar.coord$x[bar.coord$y >= 0], y = bar.coord$y[bar.coord$y >= 0], label = fun_round(bar.coord$y, 2)[bar.coord$y >= 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 - stat.dist), vjust = ifelse(vertical == TRUE, 0.5 - stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = bar.coord$x[bar.coord$y < 0], y = bar.coord$y[bar.coord$y < 0], label = fun_round(bar.coord$y, 2)[bar.coord$y < 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
+}else{ # text just above error bars or dots
+# I checked that text.coord and bar.coord have the same x and group column content. Thus, ok to use them together
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = text.coord$x[bar.coord$y >= 0], y = text.coord$text.max.pos[bar.coord$y >= 0], label = fun_round(bar.coord$y, 2)[bar.coord$y >= 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 - stat.dist), vjust = ifelse(vertical == TRUE, 0.5 - stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "text", x = text.coord$x[bar.coord$y < 0], y = text.coord$text.min.pos[bar.coord$y < 0], label = fun_round(bar.coord$y, 2)[bar.coord$y < 0], size = stat.size, color = "black", hjust = ifelse(vertical == TRUE, 0.5, 0.5 + stat.dist), vjust = ifelse(vertical == TRUE, 0.5 + stat.dist, 0.5))) # beware: no need of order() for labels because bar.coord$x set the order
+}
+# end stat display
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 9\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end stat display
+# y scale management (cannot be before dot plot management)
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+tempo.scale <- fun_scale(lim = ylim, n = ifelse(is.null(y.tick.nb), length(tempo.coord$y.major_source), y.tick.nb))
+# for the ggplot2 bug with ylog, this does not work: eval(parse(text = ifelse(vertical == FALSE & ylog == "log10", "ggplot2::scale_x_continuous", "ggplot2::scale_y_continuous")))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
+breaks = tempo.scale, 
+labels = if(ylog == "log10"){scales::trans_format("identity", scales::math_format(10^.x))}else if(ylog == "log2"){scales::trans_format("identity",  scales::math_format(2^.x))}else if(ylog == "no"){ggplot2::waiver()}else{tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n")) ; stop(tempo.cat)}, 
+expand = c(0, 0),
+limits = NA,
+trans = ifelse(diff(ylim) < 0, "reverse", "identity") # equivalent to ggplot2::scale_y_reverse()
+))
+if(vertical == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_flip(ylim = ylim)) # clip = "off" to have secondary ticks outside plot region does not work
+}
+# secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+tempo.coord <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))$layout$panel_params[[1]]
+# no secondary ticks for log2. Play with ylim
+if(ylog == "log10"){
+ylim.order <- order(ylim) # to deal with inverse axis
+ini.scipen <- options()$scipen
+options(scipen = -1000) # force scientific format
+power10.exp <- as.integer(substring(text = 10^ylim, first = (regexpr(pattern = "\\+|\\-", text = 10^ylim)))) # recover the power of 10. Example recover 08 from 1e+08
+mantisse <- as.numeric(substr(x = 10^ylim, start = 1, stop = (regexpr(pattern = "\\+|\\-", text = 10^ylim) - 2))) # recover the mantisse. Example recover 1.22 from 1.22e+08
+options(scipen = ini.scipen) # restore the initial scientific penalty
+tempo.tick.pos <- as.vector(outer(log10(2:10), 10^((power10.exp[1] - ifelse(diff(ylim.order) > 0, 1, -1)):(power10.exp[2] + ifelse(diff(ylim.order) > 0, 1, -1)))))
+tempo.tick.pos <- sort(tempo.tick.pos, decreasing = ifelse(diff(ylim.order) > 0, FALSE, TRUE))
+tempo.tick.pos <- log10(tempo.tick.pos[tempo.tick.pos >= min(10^ylim) & tempo.tick.pos <= max(10^ylim)])
+if(any(is.na(tempo.tick.pos) | ! is.finite(tempo.tick.pos))){ 
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
+stop(tempo.cat)
+}
+# if(vertical == TRUE){ # do not remove in case the bug is fixed
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = tempo.tick.pos, yend = tempo.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
+# }else{ # not working because  of the ggplot2 bug
+# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", x = tempo.tick.pos, xend = tempo.tick.pos, y = tempo.coord$y.range[1], yend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
+# }
+}else if(( ! is.null(y.inter.tick.nb)) & ylog == "no"){
+if(y.inter.tick.nb > 0){
+if(vertical == TRUE){
+ticks.pos <- suppressWarnings(as.numeric(tempo.coord$y.labels)) # too difficult to predict the behavior of tempo.coord$x.major_source depending on ylim neg or not, inv or not
+if(any(is.na(ticks.pos))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 12\n\n============\n\n"))
+stop(tempo.cat)
+}
+tick.dist <- mean(diff(ticks.pos), na.rm = TRUE)
+minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
+minor.tick.pos <- seq(ticks.pos[1] - tick.dist, ticks.pos[length(ticks.pos)] + tick.dist, by = minor.tick.dist)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = tempo.coord$x.range[1], xend = tempo.coord$x.range[1] + diff(tempo.coord$x.range) / 80))
+}else{
+ticks.pos  <- suppressWarnings(as.numeric(tempo.coord$x.labels))# too difficult to predict the behavior of tempo.coord$x.major_source depending on ylim neg or not, inv or not
+if(any(is.na(ticks.pos))){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 13\n\n============\n\n"))
+stop(tempo.cat)
+}
+tick.dist <- mean(diff(ticks.pos), na.rm = TRUE)
+minor.tick.dist <- tick.dist / (y.inter.tick.nb + 1)
+minor.tick.pos <- seq(ticks.pos[1] - tick.dist, ticks.pos[length(ticks.pos)] + tick.dist, by = minor.tick.dist)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotate(geom = "segment", y = minor.tick.pos, yend = minor.tick.pos, x = tempo.coord$y.range[1], xend = tempo.coord$y.range[1] + diff(tempo.coord$y.range) / 80))
+}
+}
+}
+# end secondary ticks (after ggplot2::coord_cartesian() or ggplot2::coord_flip())
+# end y scale  management (cannot be before dot plot management)
+if(plot == TRUE){
+suppressWarnings(print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add})))))
+}else{
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# end barplot
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+if(return == TRUE){
+output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
+output <- list(stat = stat, removed.row.nb = removed.row.nb, removed.rows = removed.rows, data = output$data, axes = output$layout$panel_params[[1]], warnings = paste0("\n", warning, "\n\n"))
+return(output)
+}
+}
+
+
+######## fun_gg_boxplot() #### ggplot2 boxplot + background dots if required
+
+
+
+
+
+
+
+######## fun_gg_bar_prop() #### ggplot2 proportion barplot
+
+
+######## fun_gg_strip() #### ggplot2 stripchart + mean/median
+
+
+######## fun_gg_violin() #### ggplot2 violins
+
+
+######## fun_gg_line() #### ggplot2 lines + background dots and error bars
+
+
+# DO NOT ERASE. COMPARE WITH BAR MEAN BEFORE AND RECOVER WHAT HAS BEEN MODIFIED
+
+fun_gg_line <- function(data1, y, categ, categ.class.order = NULL, categ.legend.name = NULL, categ.color = NULL, line.size = 1, error.disp = NULL, error.whisker.width = 0.5,  dot.color = "same", dot.tidy = FALSE, dot.bin.nb = 30, dot.jitter = 0.25, dot.size = 3, dot.border.size = 0.5, dot.alpha = 0.5, ylim = NULL, ylog = FALSE, y.tick.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0, stat.disp = NULL, stat.size = 4, stat.dist = 2, xlab = NULL, ylab = NULL, vertical = TRUE, title = "", text.size = 12, text.angle = 0, classic = FALSE, grid = FALSE, return = FALSE, path.lib = NULL){
+# AIM
+# ggplot2 vertical barplot representing mean values with the possibility to add error bars and to overlay dots
+# for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+# WARNINGS
+# rows containing NA in data1[, c(y, categ)] will be removed before processing, with a warning (see below)
+# if ever bars disappear, see the end of https://github.com/tidyverse/ggplot2/issues/2887
+# to have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1). See categ below
+# with several single bars (categ argument with only one element), bar.width argument (i.e., width argument of ggplot2::geom_bar()) defines each bar width. The bar.width argument also defines the space between bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each bar)
+# with several sets of grouped bars (categ argument with two elements), bar.width argument defines each set of grouped bar width. The bar.width argument also defines the space between set of grouped bars by using (1 - bar.width). In addition, xmin and xmax of the fun_gg_bar_mean() output report the bar boundaries (around x-axis unit 1, 2, 3, etc., for each set of grouped bar)
+# to manually change the 0 base bar into this code, see https://stackoverflow.com/questions/35324892/ggplot2-setting-geom-bar-baseline-to-1-instead-of-zero
+# ARGUMENTS
+# data1: a dataframe containing one column of values (see y argument below) and one or two columns of categories (see categ argument below). Duplicated column names not allowed
+# y: character string of the data1 column name for y-axis (containing numeric values). Numeric values will be averaged by categ to generate the bars and will also be used to plot the dots
+# categ: vector of character strings of the data1 column name for categories (column of characters or factor). Must either be one or two column names. If a single column name (further refered to as categ1), then one bar per class of categ1. If two column names (further refered to as categ1 and categ2), then one bar per class of categ2, which form a group of bars in each class of categ1. BEWARE, categ1 (and categ2 if it exists) must have a single value of y per class of categ1 (and categ2). To have a single bar, create a factor column with a single class and specify the name of this column in categ argument as unique element (no categ2 in categ argument). For a single set of grouped bars, create a factor column with a single class and specify this column in categ argument as first element (categ1)
+# categ.class.order: list indicating the order of the classes of categ1 and categ2 represented on the barplot (the first compartment for categ1 and and the second for categ2). If categ.class.order = NULL, classes are represented according to the alphabetical order. Some compartment can be NULL and other not
+# categ.legend.name: character string of the legend title for categ2. If categ.legend.name = NULL, then categ.legend.name <- categ1 if only categ1 is present and categ.legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required
+# categ.color: vector of character color string for bar filling. If categ.color = NULL, default colors of ggplot2, whatever categ1 and categ2. If categ.color is non null and only categ1 in categ argument, categ.color can be either: (1) a single color string (all the bars will have this color, whatever the classes of categ1), (2) a vector of string colors, one for each class of categ1 (each color will be associated according to categ.class.order of categ1), (3) a vector or factor of string colors, like if it was one of the column of data1 data frame (beware: a single color per class of categ1 and a single class of categ1 per color must be respected). Integers are also accepted instead of character strings, as long as above rules about length are respected. Integers will be processed by fun_gg_palette() using the max integer value among all the integers in categ.color. If categ.color is non null and categ1 and categ2 specified, all the rules described above will apply to categ2 instead of categ1 (colors will be determined for bars inside a group of bars)
+# bar.width: numeric value (from 0 to 1) of the bar or set of grouped bar width (see warnings above)
+# error.disp: either "SD", "SD.TOP", "SEM" or "SEM.TOP". If NULL, no error bars added
+# error.whisker.width: numeric value (from 0 to 1) of the whisker (error bar extremities) width, with 0 meaning no whiskers and 1 meaning a width equal to the corresponding bar width
+# dot.color: vector of character string. Idem as categ.color but for dots, except that in the possibility (3), the rule "a single color per class of categ1 and a single class of categ1", cannot be respected (each dot can have a different color). If NULL, no dots plotted
+# dot.tidy: logical. Nice dot spreading? If TRUE, use the geom_dotplot() function for a nice representation. If FALSE, dots are randomly spread, using the dot.jitter argument (see below)
+# dot.bin.nb: positive integer indicating the number of bins (i.e., nb of separations) of the ylim range. Each dot will then be put in one of the bin, with the size the width of the bin. Not considered if dot.tidy is FALSE
+# dot.jitter: numeric value (from 0 to 1) of random dot horizontal dispersion, with 0 meaning no dispersion and 1 meaning a dispersion in the corresponding bar width interval. Not considered if dot.tidy is TRUE
+# dot.size: numeric value of dot size. Not considered if dot.tidy is TRUE
+# dot.border.size: numeric value of border dot size. Write zero for no dot border. If dot.tidy is TRUE, value 0 remove the border. Another one leave the border without size control (geom_doplot() feature)
+# dot.alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
+# ylim: 2 numeric values for y-axis range. If NULL, range of y in data1
+# ylog: logical. Log scale for the y-axis?  BEWARE: do not tranform the data, but just display ticks in a log scale manner. BEWARE: if TRUE, ylim must not contain null or negative values. In addition, will be automatically set to FALSE if vertical argument is set to FALSE, to prevent a bug in ggplot2 (see https://github.com/tidyverse/ggplot2/issues/881)
+# y.tick.nb: number of desired values on the y-axis
+# y.include.zero: logical. Does ylim range include 0? BEWARE: if ylog = TRUE, will be automately set to FALSE with a warning message
+# y.top.extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to ylim. If different from 0, add the range of the axis * y.top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * y.top.extra.margin) to the top of y-axis. BEWARE with ylog = TRUE, the range result must not overlap zero or negative values
+# y.bottom.extra.margin: idem as y.top.extra.margin but to the bottom of y-axis
+# stat.disp: add the mean number above the corresponding bar. Either NULL (no number shown), "top" (at the top of the figure region) or "above" (above each bar)
+# stat.size: numeric value of the stat size (in points). Increase the value to increase text size
+# stat.dist: numeric value of the stat distance. Increase the value to increase the distance
+# xlab: a character string for x-axis legend. If NULL, character string of categ1
+# ylab: a character string y-axis legend. If NULL, character string of the y argument
+# vertical: logical. Vertical bars? BEWARE: cannot have horizontal bars with a log axis, i.e., ylog = TRUE & vertical = FALSE (see ylog above)
+# title: character string of the graph title
+# text.size: numeric value of the text size (in points)
+# text.angle: integer value of the text angle for the x-axis labels. Positive values for counterclockwise rotation: 0 for horizontal, 90 for vertical, 180 for upside down etc. Negative values for clockwise rotation: 0 for horizontal, -90 for vertical, -180 for upside down etc.
+# classic: logical. Use the classic theme (article like)?
+# grid: logical. draw horizontal lines in the background to better read the bar values? Not considered if classic = FALSE
+# return: logical. Return the graph parameters?
+# path.lib: absolute path of the required packages, if not in the default folders
+}
+
+
+######## fun_gg_heatmap() #### ggplot2 heatmap + overlaid mask if required
+
+
+#test plot.margin = margin(up.space.mds, right.space.mds, down.space.mds, left.space.mds, "inches") to set the dim of the region plot ?
+# if matrix is full of zero (or same value I guess), heatmap is complicate. Test it and error message
+
+# Check OK: clear to go Apollo
+fun_gg_heatmap <- function(data1, legend.name1 = "", low.color1 = "blue", mid.color1 = "white", high.color1 = "red", limit1 = NULL, midpoint1 = NULL, data2 = NULL, color2 = "black", alpha2 = 0.5, invert2 = FALSE, text.size = 12, title = "", title.text.size = 12, show.scale = TRUE, rotate = FALSE, return = FALSE, plot = TRUE, add = NULL, warn.print = FALSE, path.lib = NULL){
+# AIM
+# ggplot2 heatmap with the possibility to overlay a mask
+# see also:
+# draw : http://www.sthda.com/english/wiki/ggplot2-quick-correlation-matrix-heatmap-r-software-and-data-visualization
+# same range scale : https://stackoverflow.com/questions/44655723/r-ggplot2-heatmap-fixed-scale-color-between-graphs 
+# for ggplot2 specifications, see: https://ggplot2.tidyverse.org/articles/ggplot2-specs.html
+# ARGUMENTS
+# data1: numeric matrix or data frame resulting from the conversion of the numeric matrix by reshape2::melt()
+# legend.name1: character string of the data1 heatmap scale legend
+# low.color1: character string of the color (i.e., "blue" or "#0000FF") of the lowest scale value
+# mid.color1: same as low.color1 but for the middle scale value. If NULL, the middle color is the default color between low.color1 and high.color1. BEWARE: argument midpoint1 is not ignored, even if mid.color1 is NULL, meaning that the default mid color can still be controled
+# high.color1: same as low.color1 but for the highest scale value
+# limit1: 2 numeric values defining the lowest and higest color scale values. If NULL, take the range of data1 values
+# midpoint1: single numeric value defining the value corresponding to the mid.color1 argument. A warning message is returned if midpoint1 does not correspond to the mean of limit1 values, because the color scale is not linear anymore. If NULL, takes the mean of limit1 values. Mean of data1, instead of mean of limit1, can be used here if required
+# data2: binary mask matrix (made of 0 and 1) of same dimension as data1 or a data frame resulting from the conversion of the binary mask matrix by reshape2::melt(). Value 1 of data2 will correspond to color2 argument (value 0 will be NA color), and the opposite if invert2 argument is TRUE (inverted mask)
+# color2: color of the 1 values of the binary mask matrix. The 0 values will be color NA
+# alpha2: numeric value (from 0 to 1) of the mask transparency
+# invert2: logical. Invert the mask (1 -> 0 and 0 -> 1)?
+# text.size: numeric value of the size of the texts in scale
+# title: character string of the graph title
+# title.text.size: numeric value of the title size (in points)
+# show.scale: logical. Show color scale?
+# rotate: logical. Rotate the heatmap 90° clockwise?
+# return: logical. Return the graph parameters?
+# plot: logical. Plot the graphic? If FALSE and return argument is TRUE, graphical parameters and associated warnings are provided without plotting
+# add: character string allowing to add more ggplot2 features (dots, lines, themes, etc.). BEWARE: (1) must start with "+" just after the simple or double opening quote (no space, end of line, carriage return, etc., allowed), (2) must finish with ")" just before the simple or double closing quote (no space, end of line, carriage return, etc., allowed) and (3) each function must be preceded by "ggplot2::" (for instance: "ggplot2::coord_flip()). If the character string contains the "ggplot2::theme" string, then internal ggplot2 theme() and theme_classic() functions will be inactivated to be reused by add. BEWARE: handle this argument with caution since added functions can create conflicts with the preexisting internal ggplot2 functions
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# ggplot2
+# reshape2
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_pack()
+# fun_round()
+# RETURN
+# a heatmap if plot argument is TRUE
+# a list of the graph info if return argument is TRUE:
+# $data: a list of the graphic info
+# $axes: a list of the axes info
+# $scale: the scale info (lowest, mid and highest values)
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), title = "GRAPH 1")
+# fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), return = TRUE)
+# fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), legend.name1 = "VALUE", title = "GRAPH 1", text.size = 5, data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4), invert2 = FALSE, return = TRUE)
+# diagonal matrix
+# fun_gg_heatmap(data1 = matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), ncol = 4))
+# fun_gg_heatmap(data1 = reshape2::melt(matrix(c(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1), ncol = 4)))
+# error message
+# fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), data2 = matrix(rep(c(1,0,0,0), 5), ncol = 5))
+# fun_gg_heatmap(data1 = matrix(1:16, ncol = 4), data2 = reshape2::melt(matrix(rep(c(1,0,0,0), 4), ncol = 4)))
+# fun_gg_heatmap(data1 = reshape2::melt(matrix(1:16, ncol = 4)), data2 = reshape2::melt(matrix(rep(c(1,0,0,0), 4), ncol = 4)))
+#### NICE REPRESENTATION
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = expression(paste("TIME (", 10^-20, " s)")), ylog = "log10", y.tick.nb = 5, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, classic = TRUE)
+#### SINGLE GEOMETRIC LAYER
+# simple example (1) of scatter plot using the classical writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time")
+# simple example (2) of scatter plot, identical to (1) but using the list writting. Here, a list of one compartment, systematically named L1, is provided to the data1, x, y, categ, geom and alpha. Contrary to example (1), the geom and alpha argument have to be included because the default value are not lists (if data1 is a list, all the x, y, categ, legend.name, color, geom and alpha must also be list if non NULL)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
+# color of dots. Example (1) using the classical writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", color = "blue")
+# color of dots. Example (2) using the list writting
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), color = list(L1 = "blue"), geom = list(L1 = "geom_point"), alpha = list(L1 = 1))
+# From here, classical writting is use for single element in data1 and list writting otherwise
+# color of dots. Example (3) when dots are in different categories. Note that categ argument controls the legend display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group")
+# color of dots. Example (4) when dots are in different categories. A single color mentionned is applied to all the dots
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = "coral")
+# color of dots. Example (5) when dots are in different categories. Numbers can be used if ggplot colors are desired
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = 2)
+# color of dots. Example (6) when dots are in different categories, with one color per category (try also color = 2:1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = c("coral", "green"))
+# color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B"), col = rep(c("coral", "green"), each = 3)) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = obs1$col)
+# color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way (ggplot colors)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", color = as.numeric(obs1$group))
+# legend name
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", legend.name = "CLASSES")
+# different geom features. Example (1) with geom_line kind of lines
+# obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_line", categ = "group")
+# different geom features. Example (2) with geom_path kind of lines (see the difference with (1))
+# obs1 <- data.frame(km = c(1, 3, 2, 6, 4, 5), time = c(1, 3, 2, 6, 4, 5)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", geom = "geom_path", categ = "group")
+# different geom features. Example (3) with geom_hline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
+# obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = NULL, y = "km", geom = "geom_hline", categ = "group", xlim = c(1,10))
+# different geom features. Example (4) with geom_vline kind of lines. Fake_y y-axis name by default because y argument must be NULL (see ylab argument below to change this)
+# obs1 <- data.frame(km = 1:2, time = (1:2)^2, group = c("A", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = NULL, geom = "geom_vline", categ = "group", ylim = c(1,10))
+#### MULTI GEOMETRIC LAYERS
+# Note that in subsequent examples, names of list compartments are systematically referred to as L1, L2, etc., to show the correspondence between the arguments data1, x, y, categ, etc.
+# single layer (as examples above)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = "km"), y = list(L1 = "time"), geom = list(L1 = "geom_point"), alpha = list(L1 = 0.5))
+# simple example of two layers
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+# color of dots. Example (1)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+# color of dots. Example (2) of the legend display. The categ argument must be supplied. Make a fake categorical colum in the data frame if necessary (as in this example). The categ argument triggers the legend display. The legend.name argument is used to remove the legend title of each layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = "GROUP1") ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = "GROUP2") ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = NULL, L2 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+# color of dots. Example (3) when dots are in different categories (default colors)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+# color of dots. Example (3) when dots are in different categories. A single color mentionned per layer is applied to all the dots of the layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = "coral", L2 = "green"))
+# color of dots. Example (5) when dots are in different categories, with one color per category in each layer
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = c("coral", "blue"), L2 = c("green", "black")))
+# color of dots. Example (4) when dots are in different categories. Numbers can be used if ggplot colors are desired
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = 1:2, L2 = c(4, 7)))
+# color of dots. Example (7) when dots are in different categories, with colors as a data frame column. BEWARE: one color per category must be respected (try also numbers). BEWARE: in color argument, if the column of the data frame does not exist, color can be still displayed (L2 = obs2$notgood is equivalent to L2 = NULL). Such situation is reported in the warning messages (see below)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = obs1$col1, L2 = obs2$col2))
+# color of dots. Example (8) when dots are in different categories, with colors as a data frame column. Easiest way is not recommended with mutiple layers
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500), col1 = rep(c("coral", "blue"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500), col2 = rep(c("green", "black"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), color = list(L1 = as.numeric(obs1$group1), L2 = as.numeric(obs2$group2)))
+# legend name
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), legend.name = list(L1 = "CLASS A", L2 = "CLASS G"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5))
+# different geom features. Example (1) with 5 layers. Note that order in data1 defines the overlay order (from below to above) and the order in the legend (from top to bottom)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; obs3 <- data.frame(time = c(29, 31), group3 = c("HORIZ.THRESHOLD.1", "HORIZ.THRESHOLD.2")) ; obs4 <- data.frame(km = 26, group4 = "VERTIC.THRESHOLD") ; obs5 <- data.frame(km = seq(1, 100, 0.1), time = 7*seq(1, 100, 0.1)^0.5, group5 = "FUNCTION") ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2, L3 = obs3, L4 = obs4, L5 = obs5), x = list(L1 = "km", L2 = "km", L3 = NULL, L4 = "km", L5 = "km"), y = list(L1 = "time", L2 = "time", L3 = "time", L4 = NULL, L5 = "time"), categ = list(L1 = "group1", L2 = "group2", L3 = "group3", L4 = "group4", L5 = "group5"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_hline", L4 = "geom_vline", L5 = "geom_line"), alpha = list(L1 = 0.5, L2 = 0.5, L3 = 0.5, L4 = 0.5, L5 = 0.5), xlim = c(10, 40), ylim = c(10, 40), classic = TRUE, line.size = 0.75)
+# layer transparency. One transparency defined by layer (from 0 invisible to 1 opaque). Note that for lines, transparency in not applied in the legend to prevent a ggplot2 bug (https://github.com/tidyverse/ggplot2/issues/2452)
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 22, 3), time = rnorm(1000, 22, 3), group1 = rep(c("A1", "A2"), each = 500)) ; obs2 <-data.frame(km = rnorm(1000, 30, 3), time = rnorm(1000, 30, 3), group2 = rep(c("G1", "G2"), each = 500)) ; set.seed(NULL) ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), , categ = list(L1 = "group1", L2 = "group2"), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 1, L2 = 0.1))
+# other different example of mutiple geom features are shown in the fun_segmentation function
+#### OTHER GRAPHIC ARGUMENTS
+# dot size (line.size argument controls size of lines)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", dot.size = 5)
+# axis management: examples are shown for x-axis but are identical for y-axis
+# x-axis limits. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(-1, 25))
+# x-axis limits. Example (2) showing that order matters in ylim argument
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlim = c(25, -1))
+# log scale. Example (1). BEWARE: x column must be log, otherwise incoherent scale (see below warning message with the return argument)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10")
+# log scale. Example (2). BEWARE: values of the xlim must be in the corresponding log
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(1, 10))
+# tick number. Example (1). Note that the final number shown is approximate
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.tick.nb = 6)
+# tick number. Example (2) using a log2 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log2", x.tick.nb = 6)
+# tick number. Example (3) using a log10 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.tick.nb = 6)
+# tick number. Example (4) using a log10 scale: the reverse x-axis correctly deal with log10 scale
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", xlim = c(7, 2))
+# secondary tick number. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.inter.tick.nb = 4)
+# secondary ticks. Example (2) not for log2 and log10 scales (see below warning message with the return argument)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", x.inter.tick.nb = 4)
+# extra margins. To avoid dot cuts
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", x.left.extra.margin = 0.25, x.right.extra.margin = 0.25)
+# include zero in both the x-axis and y-xis
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", xy.include.zero = TRUE)
+# graph title, text size and legend display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", categ = "group", text.size = 8, title = "GRAPH1", title.text.size = 16, show.legend = TRUE)
+# raster display. This switchs from vectorial mode to raster mode. The display can takes some time, but this is easier to export and handle than vectorial display
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(100000, 22, 3), time = rnorm(100000, 22, 3)) ; set.seed(NULL) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", raster = TRUE)
+# classic representation (use grid = TRUE to display the background lines of the y axis ticks)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", classic = TRUE, grid = FALSE)
+# graphic info. Example (1)
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", return = TRUE)
+# graphic info. Example (2) of assignation and warning message display
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; output <- fun_gg_scatter(data1 = obs1, x = "km", y = "time", xlog = "log10", return = TRUE) ; cat(output$warnings)
+# add ggplot2 functions
+# obs1 <- data.frame(km = 2:7, time = (2:7)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = obs1, x = "km", y = "time", add = "+ggplot2::theme_classic()")
+# all the arguments
+# set.seed(1) ; obs1 <- data.frame(km = rnorm(1000, 10, 3), time = rnorm(1000, 10, 3), group1 = rep(c("A1", "A2"), 500)) ; obs2 <-data.frame(km = rnorm(1000, 15, 3), time = rnorm(1000, 15, 3), group2 = rep(c("G1", "G2"), 500)) ; set.seed(NULL) ; obs1$L1$km[2:3] <- NA ; fun_gg_scatter(data1 = list(L1 = obs1, L2 = obs2), x = list(L1 = "km", L2 = "km"), y = list(L1 = "time", L2 = "time"), categ = list(L1 = "group1", L2 = "group2"), legend.name = NULL, color = list(L1 = 4:5, L2 = 7:8), geom = list(L1 = "geom_point", L2 = "geom_point"), alpha = list(L1 = 0.5, L2 = 0.5), dot.size = 3, line.size = 0.5, xlim = c(1, 25), xlab = "KM", xlog = "no", x.tick.nb = 10, x.inter.tick.nb = 1, x.left.extra.margin = 0, x.right.extra.margin = 0, ylim = c(1, 25), ylab = "TIME (s)", ylog = "log10", y.tick.nb = 5, y.inter.tick.nb = NULL, y.top.extra.margin = 0, y.bottom.extra.margin = 0, xy.include.zero = TRUE, text.size = 12, title = "", title.text.size = 8, show.legend = TRUE, classic = FALSE, grid = FALSE, raster = FALSE, vectorial.limit = NULL, return = FALSE, plot = TRUE, add = NULL, warn.print = TRUE, path.lib = NULL)
+
+
+
+
+
+# DEBUGGING
+# data1 = matrix(1:16, ncol = 4) ; legend.name1 = "" ; low.color1 = "blue" ; mid.color1 = "white" ; high.color1 = "red" ; limit1 = NULL ; midpoint1 = NULL ; data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4) ; color2 = "black" ; alpha2 = 0.5 ; invert2 = FALSE ; text.size = 12 ; title = "" ; title.text.size = 12 ; show.scale = TRUE ; rotate = FALSE ; return = FALSE ; plot = TRUE ; add = NULL ; warn.print = TRUE ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_round", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_round() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# no reserved words required for this function
+# argument checking
+warning <- NULL
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+if(all(is.matrix(data1))){
+tempo <- fun_check(data = data1, class = "matrix", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}else if(all(is.data.frame(data1))){
+tempo <- fun_check(data = data1, class = "data.frame", length = 3, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE){
+# structure of reshape2::melt() data frame
+tempo <- fun_check(data = data1[, 1], typeof = "integer", fun.name = function.name)
+tempo <- fun_check(data = data1[, 2], typeof = "integer", fun.name = function.name)
+tempo <- fun_check(data = data1[, 3], mode = "numeric", na.contain = TRUE, fun.name = function.name)
+}
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data1 ARGUMENT MUST BE A NUMERIC MATRIX OR A DATA FRAME OUTPUT OF THE reshape::melt() FUNCTION\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = legend.name1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = low.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(low.color1 %in% colors() | grepl(pattern = "^#", low.color1)))){ # check that all strings of low.color1 start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": low.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(mid.color1)){
+tempo <- fun_check(data = mid.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(mid.color1 %in% colors() | grepl(pattern = "^#", mid.color1)))){ # check that all strings of mid.color1 start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mid.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = high.color1, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(high.color1 %in% colors() | grepl(pattern = "^#", high.color1)))){ # check that all strings of high.color1 start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": high.color1 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(limit1)){
+tempo <- fun_check(data = limit1, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & any(limit1 %in% c(Inf, -Inf))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": limit1 ARGUMENT CANNOT CONTAIN -Inf OR Inf VALUES\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(midpoint1)){
+tempo <- fun_check(data = midpoint1, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(data2)){
+if(all(is.matrix(data2))){
+tempo <- fun_check(data = data2, class = "matrix", mode = "numeric", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(unique(data2) %in% c(0,1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX IN data2 MUST BE MADE OF 0 AND 1 ONLY (MASK MATRIX)\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & all(is.matrix(data1)) & ! identical(dim(data1), dim(data2))){ # matrix and matrix
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": MATRIX DIMENSION IN data2 MUST BE IDENTICAL AS MATRIX DIMENSION IN data1. HERE IT IS RESPECTIVELY:\n", paste(dim(data2), collapse = " "), "\n", paste(dim(data1), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & all(is.data.frame(data1)) & nrow(data1) != prod(dim(data2))){ # reshape2 and matrix
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME IN data2 MUST HAVE ROW NUMBER EQUAL TO PRODUCT OF DIMENSIONS OF data1 MATRIX. HERE IT IS RESPECTIVELY:\n", paste(nrow(data1), collapse = " "), "\n", paste(prod(dim(data2)), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}else if(all(is.data.frame(data2))){
+tempo <- fun_check(data = data2, class = "data.frame", length = 3, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE){
+# structure of reshape2::melt() data frame
+tempo <- fun_check(data = data2[, 1], typeof = "integer", fun.name = function.name)
+tempo <- fun_check(data = data2[, 2], typeof = "integer", fun.name = function.name)
+tempo <- fun_check(data = data2[, 3], mode = "numeric", fun.name = function.name)
+}
+if(tempo$problem == FALSE & ! all(unique(data2[, 3]) %in% c(0,1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THIRD COLUMN OF DATA FRAME IN data2 MUST BE MADE OF 0 AND 1 ONLY (MASK DATA FRAME)\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & all(is.data.frame(data1)) & ! identical(dim(data1), dim(data2))){ # data frame and data frame
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME DIMENSION IN data2 MUST BE IDENTICAL TO DATA FRAME DIMENSION IN data1. HERE IT IS RESPECTIVELY:\n", paste(dim(data2), collapse = " "), "\n", paste(dim(data1), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & all(is.matrix(data1)) & nrow(data2) != prod(dim(data1))){ # reshape2 and matrix
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": DATA FRAME IN data2 MUST HAVE ROW NUMBER EQUAL TO PRODUCT OF DIMENSION OF data1 MATRIX. HERE IT IS RESPECTIVELY:\n", paste(nrow(data2), collapse = " "), "\n", paste(prod(dim(data1)), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}else{
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE data2 ARGUMENT MUST BE A NUMERIC MATRIX OR A DATA FRAME OUTPUT OF THE reshape::melt() FUNCTION\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = color2, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(color2 %in% colors() | grepl(pattern = "^#", color2)))){ # check that all strings of color2 start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": color2 ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = alpha2, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = invert2, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = title.text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = show.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = plot, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(add)){
+tempo <- fun_check(data = add, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! grepl(pattern = "^\\+", add)){ # check that the add string start by +
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST START WITH \"+\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = "ggplot2::", add)){ #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST CONTAIN \"ggplot2::\" IN FRONT OF EACH GGPLOT2 FUNCTION: ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & ! grepl(pattern = ")$", add)){ # check that the add string  finished by )
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": add ARGUMENT MUST FINISH BY \")\": ", paste(unique(add), collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = c("reshape2", "ggplot2"), path.lib = path.lib)
+# end package checking
+# main code
+if(all(is.matrix(data1))){
+data1 <- reshape2::melt(data1) # transform a matrix into a dataframe with 2 coordinates columns and the third intensity column
+}
+if(rotate == TRUE){
+data1[, 1] <- rev(data1[, 1])
+}
+if(is.null(limit1)){
+if(any(data1[, 3] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE THIRD COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+limit1 <- range(data1[, 3], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE limit1 ARGUMENT IS NULL -> RANGE OF data1 ARGUMENT HAS BEEN TAKEN: ", paste(fun_round(limit1), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+if(suppressWarnings(any(limit1 %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED LIMIT CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if(is.null(midpoint1)){
+midpoint1 <- mean(limit1, na.rm = TRUE)
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE midpoint1 ARGUMENT IS NULL -> MEAN OF limit1 ARGUMENT HAS BEEN TAKEN: ", paste(fun_round(midpoint1), collapse = " "))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else if(fun_round(midpoint1, 9) != fun_round(mean(limit1), 9)){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE midpoint1 ARGUMENT (", fun_round(mean(midpoint1), 9), ") DOES NOT CORRESPOND TO THE MEAN OF THE limit1 ARGUMENT (", fun_round(mean(limit1), 9), "). COLOR SCALE IS NOT LINEAR")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if( ! is.null(data2)){
+if(all(is.matrix(data2))){
+data2 <- reshape2::melt(data2) # transform a matrix into a dataframe with 2 coordinates columns and the third intensity column
+}
+if(rotate == TRUE){
+data2[, 1] <- rev(data2[, 1])
+}
+data2[, 3] <- factor(data2[, 3]) # to converte continuous scale into discrete scale
+}
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0 # to facilitate debugging
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data1, mapping = ggplot2::aes_string(x = names(data1)[ifelse(rotate == FALSE, 2, 1)], y = names(data1)[ifelse(rotate == FALSE, 1, 2)], fill = names(data1)[3]), show.legend = show.scale)) # show.legend option do not remove the legend, only the aesthetic of the legend (dot, line, etc.)
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_gradient2(low = low.color1, high = high.color1, mid = mid.color1, midpoint = midpoint1, limit = limit1, breaks = c(limit1[1], midpoint1, limit1[2]), labels = fun_round(c(limit1[1], midpoint1, limit1[2])), name = legend.name1))
+if( ! is.null(data2)){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data2, mapping = ggplot2::aes_string(x = names(data2)[ifelse(rotate == FALSE, 2, 1)], y = names(data2)[ifelse(rotate == FALSE, 1, 2)], alpha = names(data2)[3]), fill = color2, show.legend = FALSE))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "alpha", values = if(invert2 == FALSE){c(0, alpha2)}else{c(alpha2, 0)}, guide = FALSE))
+# assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(data = data2, mapping = ggplot2::aes_string(x = names(data2)[ifelse(rotate == FALSE, 2, 1)], y = names(data2)[ifelse(rotate == FALSE, 1, 2)], group = names(data2)[3]), fill = data2[, 3], alpha = alpha2, show.legend = FALSE)) # BEWARE: this does not work if NA present, because geom_raster() has a tendency to complete empty spaces, and thus, behave differently than geom_tile(). See https://github.com/tidyverse/ggplot2/issues/3025
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_fixed()) # x = y
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_reverse())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+add.check <- TRUE
+if( ! is.null(add)){ # if add is NULL, then = 0
+if(grepl(pattern = "ggplot2::theme", add) == TRUE){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": \"ggplot2::theme\" STRING DETECTED IN THE add ARGUMENT -> INTERNAL GGPLOT2 THEME FUNCTIONS theme() AND theme_classic() HAVE BEEN INACTIVATED, TO BE USED BY THE USER")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+add.check <- FALSE
+}
+}
+if(add.check == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+plot.title = ggplot2::element_text(size = title.text.size), # stronger than text
+line = ggplot2::element_blank(),
+axis.title = ggplot2::element_blank(),
+axis.text = ggplot2::element_blank(),
+axis.ticks = ggplot2::element_blank(),
+panel.background = ggplot2::element_blank()
+))
+}
+if(plot == TRUE){
+# suppressWarnings(
+print(eval(parse(text = paste(paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "), if(is.null(add)){NULL}else{add}))))
+# )
+}else{
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": PLOT NOT SHOWN AS REQUESTED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+if(return == TRUE){
+output <- ggplot2::ggplot_build(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + "))))
+output <- output$data
+names(output)[1] <- "heatmap"
+if( ! is.null(data2)){
+names(output)[2] <- "mask"
+}
+return(list(data = output, axes = output$layout$panel_params[[1]], scale = c(limit1[1],  midpoint1, limit1[2]), warnings = warning))
+}
+}
+
+
+######## fun_gg_empty_graph() #### text to display for empty graphs
+
+
+ 
+
+
+# Check OK: clear to go Apollo
+fun_gg_empty_graph <- function(text = NULL, text.size = 12, title = NULL, title.size = 8, path.lib = NULL){
+# AIM
+# display an empty ggplot2 plot with a text in the middle of the window (for instance to specify that no plot can be drawn)
+# ARGUMENTS
+# text: character string of the message to display
+# text.size: numeric value of the text size (in points)
+# title: character string of the graph title
+# title.size: numeric value of the title size (in points)
+# path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# ggplot2
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_pack()
+# RETURN
+# an empty plot
+# EXAMPLES
+### simple example
+# fun_gg_empty_graph(text = "NO GRAPH")
+### white page
+# fun_gg_empty_graph()
+### all the arguments
+# fun_gg_empty_graph(text = "NO GRAPH", text.size = 8, title = "GRAPH1", title.size = 10, path.lib = NULL)
+# DEBUGGING
+# text = "NO GRAPH" ; text.size = 12 ; title = "GRAPH1" ; title.size = 8 ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+if( ! is.null(text)){
+tempo <- fun_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(title)){
+tempo <- fun_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = title.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+# end package checking
+# main code
+tempo.gg.name <- "gg.indiv.plot."
+tempo.gg.count <- 0
+# no need loop part
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggplot())
+if( ! is.null(text)){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(data = data.frame(x = 1, y = 1), ggplot2::aes(x = x, y = y, label = text), size = text.size))
+}
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::ggtitle(title))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_void())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+plot.title = ggplot2::element_text(size = title.size) # stronger than text
+))
+suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+}
+
+
+################ Graphic extraction
+
+
+######## fun_trim() #### display values from a quantitative variable and trim according to defined cut-offs
+
+
+# Check OK: clear to go Apollo
+fun_trim <- function(data, displayed.nb = NULL, single.value.display = FALSE, trim.method = "", trim.cutoffs = c(0.05, 0.975), interval.scale.disp = TRUE, down.space = 0.75, left.space = 0.75, up.space = 0.3, right.space = 0.25, orient = 1, dist.legend = 0.37, box.type = "l", amplif.label = 1.25, amplif.axis = 1.25, std.x.range = TRUE, std.y.range = TRUE, cex.pt = 0.2, col.box = hsv(0.55, 0.8, 0.8), x.nb.inter.tick = 4, y.nb.inter.tick = 0, tick.length = 1, sec.tick.length = 0.75, corner.text = "", amplif.legend = 1, magnific.corner.text = 0.75, trim.return = FALSE){
+# AIM
+# trim and display values from a numeric vector or matrix
+# plot 4 graphs: stripchart of values, stripchart of rank of values, hitogramme and normal QQPlot
+# different kinds of intervals are displayed on the top of graphes to facilitate the analysis of the variable and a trimming setting
+# the trimming interval chosen is displayed on top of graphs
+# both trimmed and not trimmed values are returned in a list
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data: values to plot (either a numeric vector or a numeric matrix)
+# displayed.nb: number of values displayed. If NULL, all the values are displayed. Otherwise, if the number of values is over displayed.nb, then displayed.nb values are displayed after random selection
+# single.value.display: provide the 4 graphs if data is made of a single (potentially repeated value)? If FALSE, an empty graph is displayed if data is made of a single (potentially repeated value). And the return list is made of NULL compartments
+# trim.method: Write "" if not required. write "mean.sd" if mean +/- sd has to be displayed as a trimming interval (only recommanded for normal distribution). Write "quantile" to display a trimming interval based on quantile cut-offs. No other possibility allowed. See trim.cutoffs below
+# trim.cutoffs: 2 values cutoff for the trimming interval displayed, each value between 0 and 1. Not used if trim.method == "".The couple of values c(lower, upper) represents the lower and upper boundaries of the trimming interval (in proportion), which represent the interval of distribution kept (between 0 and 1). Example: trim.cutoffs = c(0.05, 0.975). What is strictly kept for the display is ]lower , upper[, boundaries excluded. Using the "mean.sd" method, 0.025 and 0.975 represent 95% CI which is mean +/- 1.96 * sd
+# interval.scale.disp: display sd and quantiles intervals on top of graphs ?
+# down.space: lower vertical margin (in inches, mai argument of par())
+# left.space: left horizontal margin (in inches, mai argument of par())
+# up.space: upper vertical margin between plot region and grapical window (in inches, mai argument of par())
+# right.space: right horizontal margin (in inches, mai argument of par())
+# orient: scale number orientation (las argument of par()). 0, always parallel to the axis; 1, always horizontal; 2, always perpendicular to the axis; 3, always vertical
+# dist.legend: numeric value that moves axis legends away in inches (first number of mgp argument of par() but in inches thus / 0.2)
+# box.type: bty argument of par(). Either "o", "l", "7", "c", "u", "]", the resulting box resembles the corresponding upper case letter. A value of "n" suppresses the box
+# amplif.label: increase or decrease the size of the text in legends
+# amplif.axis: increase or decrease the size of the scale numbers in axis
+# std.x.range: standard range on the x-axis? TRUE (no range extend) or FALSE (4% range extend). Controls xaxs argument of par() (TRUE is xaxs = "i", FALSE is xaxs = "r")
+# std.y.range: standard range on the y-axis? TRUE (no range extend) or FALSE (4% range extend). Controls yaxs argument of par() (TRUE is yaxs = "i", FALSE is yaxs = "r")
+# cex.pt: size of points in stripcharts (in inches, thus cex.pt will be thereafter / 0.2)
+# col.box: color of boxplot
+# x.nb.inter.tick: number of secondary ticks between main ticks on x-axis (only if not log scale). Zero means non secondary ticks
+# y.nb.inter.tick: number of secondary ticks between main ticks on y-axis (only if not log scale). Zero means non secondary ticks
+# tick.length: length of the ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc. 0 means no tick
+# sec.tick.length: length of the secondary ticks (1 means complete the distance between the plot region and the axis numbers, 0.5 means half the length, etc., 0 for no ticks)
+# corner.text: text to add at the top right corner of the window
+# amplif.legend: increase or decrease the size of the text of legend
+# magnific.corner.text: increase or decrease the size of the text
+# trim.return: return the trimmed and non trimmed values? NULL returned for trimmed and non trimmed values if trim.method == ""
+# RETURN
+# a list containing:
+# $trim.method: correspond to trim.method above
+# $trim.cutoffs: correspond to trim.cutoffs above
+# $real.trim.cutoffs: the two boundary values (in the unit of the numeric vector or numeric matrix analyzed). NULL 
+# $trimmed.values: the values outside of the trimming interval as defined in trim.cutoffs above
+# $kept.values: the values inside the trimming interval as defined in trim.cutoffs above
+# EXAMPLES
+# fun_trim(data = c(1:100, 1:10), displayed.nb = NULL, single.value.display = FALSE, trim.method = "mean.sd", trim.cutoffs = c(0.05, 0.975), interval.scale.disp = TRUE, down.space = 0.75, left.space = 0.75, up.space = 0.3, right.space = 0.25, orient = 1, dist.legend = 0.37, box.type = "l", amplif.label = 1.25, amplif.axis = 1.25, std.x.range = TRUE, std.y.range = TRUE, cex.pt = 0.2, col.box = hsv(0.55, 0.8, 0.8), x.nb.inter.tick = 4, y.nb.inter.tick = 0, tick.length = 0.5, sec.tick.length = 0.3, corner.text = "", amplif.legend = 1, magnific.corner.text = 0.75, trim.return = TRUE)
+# DEBUGGING
+# data = c(1:100, 1:10) ; displayed.nb = NULL ; single.value.display = FALSE ; trim.method = "quantile" ; trim.cutoffs = c(0.05, 0.975) ; interval.scale.disp = TRUE ; down.space = 1 ; left.space = 1 ; up.space = 0.5 ; right.space = 0.25 ; orient = 1 ; dist.legend = 0.5 ; box.type = "l" ; amplif.label = 1 ; amplif.axis = 1 ; std.x.range = TRUE ; std.y.range = TRUE ; cex.pt = 0.1 ; col.box = hsv(0.55, 0.8, 0.8) ; x.nb.inter.tick = 4 ; y.nb.inter.tick = 0 ; tick.length = 0.5 ; sec.tick.length = 0.3 ; corner.text = "" ; amplif.legend = 1 ; magnific.corner.text = 0.75 ; trim.return = TRUE # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if( ! (all(class(data) == "numeric") | all(class(data) == "integer") | (all(class(data) == "matrix") & mode(data) == "numeric"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A NUMERIC VECTOR OR NUMERIC MATRIX\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+if( ! is.null(displayed.nb)){
+tempo <- fun_check(data = displayed.nb, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(displayed.nb < 2){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": displayed.nb ARGUMENT MUST BE A SINGLE INTEGER VALUE GREATER THAN 1 AND NOT: ", paste(displayed.nb, collapse = " "), "\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = single.value.display, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = trim.method, options = c("", "mean.sd", "quantile"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = trim.cutoffs, class = "vector", mode = "numeric", length = 2, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = interval.scale.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = cex.pt, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = col.box, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = x.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = y.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = sec.tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = amplif.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = trim.return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+if(class(data) == "matrix"){
+data <- as.vector(data)
+}
+color.cut <- hsv(0.75, 1, 1) # color of interval selected
+col.mean <- hsv(0.25, 1, 0.8) # color of interval using mean+/-sd
+col.quantile <- "orange" # color of interval using quantiles
+quantiles.selection <- c(0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 0.75, 0.9, 0.95, 0.975, 0.99) # quantiles used in axis to help for choosing trimming cutoffs
+if(single.value.display == FALSE & length(unique(data)) == 1){
+par(bty = "n", xaxt = "n", yaxt = "n", xpd = TRUE)
+plot(1, pch = 16, col = "white", xlab = "", ylab = "")
+text(x = 1, y = 1, paste0("No graphic displayed\nBecause data made of a single different value (", formatC(as.double(table(data))), ")"), cex = 2)
+output <- list(trim.method = NULL, trim.cutoffs = NULL, real.trim.cutoffs = NULL, trimmed.values = NULL, kept.values = NULL)
+}else{
+output <- list(trim.method = trim.method, trim.cutoffs = trim.cutoffs, real.trim.cutoffs = NULL, trimmed.values = NULL, kept.values = NULL)
+fun.rug <- function(sec.tick.length.f = sec.tick.length, x.nb.inter.tick.f = x.nb.inter.tick, y.nb.inter.tick.f = y.nb.inter.tick){
+if(x.nb.inter.tick.f > 0){
+inter.tick.unit <- (par("xaxp")[2] - par("xaxp")[1]) / par("xaxp")[3]
+par.ini <- par()[c("xpd", "tcl")]
+par(xpd = FALSE)
+par(tcl = -par()$mgp[2] * sec.tick.length.f) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
+suppressWarnings(rug(seq(par("xaxp")[1] - 10 * inter.tick.unit, par("xaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + x.nb.inter.tick.f)), ticksize = NA, side = 1)) # ticksize = NA to allow the use of par()$tcl value
+par(par.ini)
+rm(par.ini)
+}
+if(y.nb.inter.tick.f > 0){
+inter.tick.unit <- (par("yaxp")[2] - par("yaxp")[1]) / par("yaxp")[3]
+par.ini <- par()[c("xpd", "tcl")]
+par(xpd = FALSE)
+par(tcl = -par()$mgp[2] * sec.tick.length.f) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
+suppressWarnings(rug(seq(par("yaxp")[1] - 10 * inter.tick.unit, par("yaxp")[2] + 10 * inter.tick.unit, by = inter.tick.unit / (1 + y.nb.inter.tick.f)), ticksize = NA, side = 2)) # ticksize = NA to allow the use of par()$tcl value
+par(par.ini)
+rm(par.ini)
+}
+}
+fun.add.cut <- function(data.f, trim.method.f = trim.method, trim.cutoffs.f = trim.cutoffs, color.cut.f = color.cut, return.f = FALSE){
+# DEBUGGING
+# data.f = data ; trim.method.f = "mean.sd"; trim.cutoffs.f = trim.cutoffs ; color.cut.f = color.cut ; return.f = TRUE
+real.trim.cutoffs.f <- NULL
+if(trim.method.f != ""){
+data.f <- sort(data.f)
+par.ini <- par()$xpd
+par(xpd = FALSE)
+if(trim.method.f == "mean.sd"){
+real.trim.cutoffs.f <- qnorm(trim.cutoffs.f, mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE))
+abline(v = qnorm(trim.cutoffs.f, mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), col = color.cut.f)
+segments(qnorm(trim.cutoffs.f[1], mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), par()$usr[4] * 0.75, qnorm(trim.cutoffs.f[2], mean(data.f, na.rm = TRUE), sd(data.f, na.rm = TRUE)), par()$usr[4] * 0.75, col = color.cut.f)
+}
+if(trim.method.f == "quantile"){
+real.trim.cutoffs.f <- quantile(data.f, probs = trim.cutoffs.f, type = 7)
+abline(v = quantile(data.f, probs = trim.cutoffs.f, type = 7), col = color.cut.f)
+segments(quantile(data.f, probs = trim.cutoffs.f[1], type = 7), par()$usr[4] * 0.75, quantile(data.f, probs = trim.cutoffs.f[2], type = 7), par()$usr[4] * 0.75, col = color.cut.f)
+}
+par(par.ini)
+if(return.f == TRUE){
+trimmed.values.f <- data.f[data.f <= real.trim.cutoffs.f[1] | data.f >= real.trim.cutoffs.f[2]]
+kept.values.f <- data.f[data.f > real.trim.cutoffs.f[1] & data.f < real.trim.cutoffs.f[2]]
+}
+}else{
+real.trim.cutoffs.f <- NULL
+trimmed.values.f <- NULL
+kept.values.f <- NULL
+}
+if(return.f == TRUE){
+output <- list(trim.method = trim.method.f, trim.cutoffs = trim.cutoffs.f, real.trim.cutoffs = real.trim.cutoffs.f, trimmed.values = trimmed.values.f, kept.values = kept.values.f)
+return(output)
+}
+}
+fun.interval.scale.display <- function(data.f, col.quantile.f = col.quantile, quantiles.selection.f = quantiles.selection, col.mean.f = col.mean){ # intervals on top of graphs
+par.ini <- par()[c("mgp", "xpd")]
+par(mgp = c(0.25, 0.25, 0), xpd = NA)
+axis(side = 3, at = c(par()$usr[1], par()$usr[2]), labels = rep("", 2), col = col.quantile.f, lwd.ticks = 0)
+par(xpd = FALSE)
+axis(side = 3, at = quantile(as.vector(data.f), probs = quantiles.selection.f, type = 7), labels = quantiles.selection.f, col.axis = col.quantile.f, col = col.quantile.f)
+par(mgp = c(1.75, 1.75, 1.5), xpd = NA)
+axis(side = 3, at = c(par()$usr[1], par()$usr[2]), labels = rep("", 2), col = col.mean.f, lwd.ticks = 0)
+par(xpd = FALSE)
+axis(side = 3, at = m + s * qnorm(quantiles.selection.f), labels = formatC(round(qnorm(quantiles.selection.f), 2)), col.axis = col.mean.f, col = col.mean.f, lwd.ticks = 1)
+par(par.ini)
+}
+zone<-matrix(1:4, ncol=2)
+layout(zone)
+par(omi = c(0, 0, 1.5, 0), mai = c(down.space, left.space, up.space, right.space), las = orient, mgp = c(dist.legend / 0.2, 0.5, 0), xpd = FALSE, bty= box.type, cex.lab = amplif.label, cex.axis = amplif.axis, xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
+par(tcl = -par()$mgp[2] * tick.length) # tcl gives the length of the ticks as proportion of line text, knowing that mgp is in text lines. So the main ticks are a 0.5 of the distance of the axis numbers by default. The sign provides the side of the tick (negative for outside of the plot region)
+if(is.null(displayed.nb)){
+sampled.data <- as.vector(data)
+if(corner.text == ""){
+corner.text <- paste0("ALL VALUES OF THE DATASET DISPLAYED")
+}else{
+corner.text <- paste0(corner.text, "\nALL VALUES OF THE DATASET DISPLAYED")
+}
+}else{
+if(length(as.vector(data)) > displayed.nb){
+sampled.data <- sample(as.vector(data), displayed.nb, replace = FALSE)
+if(corner.text == ""){
+corner.text <- paste0("BEWARE: ONLY ", displayed.nb, " VALUES ARE DISPLAYED AMONG THE ", length(as.vector(data)), " VALUES OF THE DATASET ANALYZED")
+}else{
+corner.text <- paste0(corner.text, "\nBEWARE: ONLY ", displayed.nb, " VALUES ARE DISPLAYED AMONG THE ", length(as.vector(data)), " VALUES OF THE DATASET ANALYZED")
+}
+}else{
+sampled.data <- as.vector(data)
+if(corner.text == ""){
+corner.text <- paste0("BEWARE: THE DISPLAYED NUMBER OF VALUES PARAMETER ", deparse(substitute(displayed.nb)), " HAS BEEN SET TO ", displayed.nb, " WHICH IS ABOVE THE NUMBER OF VALUES OF THE DATASET ANALYZED -> ALL VALUES DISPLAYED")
+}else{
+corner.text <- paste0(corner.text, "\nBEWARE: THE DISPLAYED NUMBER OF VALUES PARAMETER ", deparse(substitute(displayed.nb)), " HAS BEEN SET TO ", displayed.nb, " WHICH IS ABOVE THE NUMBER OF VALUES OF THE DATASET ANALYZED -> ALL VALUES DISPLAYED")
+}
+}
+}
+stripchart(sampled.data, method="jitter", jitter=0.4, vertical=FALSE, ylim=c(0.5, 1.5), group.names = "", xlab = "Value", ylab="", pch=1, cex = cex.pt / 0.2)
+fun.rug(y.nb.inter.tick.f = 0)
+boxplot(as.vector(data), horizontal=TRUE, add=TRUE, boxwex = 0.4, staplecol = col.box, whiskcol = col.box, medcol = col.box, boxcol = col.box, range = 0, whisklty = 1)
+m <- mean(as.vector(data), na.rm = TRUE)
+s <- sd(as.vector(data), na.rm = TRUE)
+segments(m, 0.8, m, 1, lwd=2, col="red") # mean 
+segments(m -1.96 * s, 0.9, m + 1.96 * s, 0.9, lwd=1, col="red") # mean 
+graph.xlim <- par()$usr[1:2] # for hist() and qqnorm() below
+if(interval.scale.disp == TRUE){
+fun.interval.scale.display(data.f = data)
+if(corner.text == ""){
+corner.text <- paste0("MULTIPLYING FACTOR DISPLAYED (MEAN +/- SD) ON SCALES: ", paste(formatC(round(qnorm(quantiles.selection), 2))[-(1:(length(quantiles.selection) - 1) / 2)], collapse = ", "), "\nQUANTILES DISPLAYED ON SCALES: ", paste(quantiles.selection, collapse = ", "))
+}else{
+corner.text <- paste0(corner.text, "\nMULTIPLYING FACTOR DISPLAYED (MEAN +/- SD) ON SCALES: ", paste(formatC(round(qnorm(quantiles.selection), 2))[-(1:(length(quantiles.selection) - 1) / 2)], collapse = ", "), "\nQUANTILES DISPLAYED ON SCALES: ", paste(quantiles.selection, collapse = ", "))
+}
+}
+output.tempo <- fun.add.cut(data.f = data, return.f = TRUE) # to recover real.trim.cutoffs
+if(trim.return == TRUE){
+output <- output.tempo
+}
+par(xpd = NA)
+if(trim.method != ""){
+if(corner.text == ""){
+corner.text <- paste0("SELECTED CUT-OFFS (PROPORTION): ", paste(trim.cutoffs, collapse = ", "), "\nSELECTED CUT-OFFS: ", paste(output.tempo$real.trim.cutoffs, collapse = ", "))
+}else{
+corner.text <- paste0(corner.text, "\nSELECTED CUT-OFFS (PROPORTION): ", paste(trim.cutoffs, collapse = ", "), "\nSELECTED CUT-OFFS: ", paste(output.tempo$real.trim.cutoffs, collapse = ", "))
+}
+if(interval.scale.disp == TRUE){
+legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- 1.96sd", paste0("Trimming interval: ", paste0(trim.cutoffs, collapse = " , ")), "Mean +/- sd multiplying factor", "Quantile"), yjust = 0, lty=1, col=c(col.box, "red", color.cut, col.mean, col.quantile), bty="n", cex = amplif.legend)
+}else{
+legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- 1.96sd", paste0("Trimming interval: ", paste0(trim.cutoffs, collapse = " , "))), yjust = 0, lty=1, col=c(col.box, "red", color.cut), bty="n", cex = amplif.legend, y.intersp=1.25)
+}
+}else{
+if(interval.scale.disp == TRUE){
+legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- sd", "Mean +/- sd multiplying factor", "Quantile"), yjust = 0, lty=1, col=c(col.box, "red", col.mean, col.quantile), bty="n", cex = amplif.legend)
+}else{
+legend(x = (par("usr")[1] - ((par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1])) * par("plt")[1] - ((par("usr")[2] - par("usr")[1]) / (par("omd")[2] - par("omd")[1])) * par("omd")[1]), y = (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / (par("omd")[4] - par("omd")[3])) * (1 - par("omd")[4]) / 2), legend = c(c("min, Q1, Median, Q3, max"), "mean +/- sd"), yjust = 0, lty=1, col=c(col.box, "red"), bty="n", cex = amplif.legend, y.intersp=1.25)
+}
+}
+par(xpd = FALSE, xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
+hist(as.vector(data), main = "", breaks = seq(min(as.vector(data), na.rm = TRUE), max(as.vector(data), na.rm = TRUE), length.out = length(as.vector(data)) / 10), xlim = graph.xlim, xlab = "Value", ylab="Density", col = grey(0.25))
+abline(h = par()$usr[3])
+fun.rug()
+if(interval.scale.disp == TRUE){
+fun.interval.scale.display(data.f = data)
+}
+fun.add.cut(data.f = data)
+par(xaxs = ifelse(std.x.range, "i", "r"))
+stripchart(rank(sampled.data), method="stack", vertical=FALSE, ylim=c(0.99, 1.3), group.names = "", xlab = "Rank of values", ylab="", pch=1, cex = cex.pt / 0.2)
+fun.rug(y.nb.inter.tick.f = 0)
+x.text <- par("usr")[2] + (par("usr")[2] - par("usr")[1]) / (par("plt")[2] - par("plt")[1]) * (1 - par("plt")[2]) / 2
+y.text <- (par("usr")[4] + ((par("usr")[4] - par("usr")[3]) / (par("plt")[4] - par("plt")[3])) * (1 - par("plt")[4]) + ((par("usr")[4] - par("usr")[3]) / ((par()$omd[4] / 2) * ((par("plt")[4] - par("plt")[3])))) * (1 - par("omd")[4])) # BEWARE. Here in "(par()$omd[4] / 2", division by two because there are 2 graphs staked on the y axis, and not one
+par(xpd=NA)
+text(x = x.text, y = y.text, paste0(corner.text), adj=c(1, 1.1), cex = magnific.corner.text) # text at the topright corner
+par(xpd=FALSE)
+par(xaxs = ifelse(std.x.range, "i", "r"), yaxs = ifelse(std.y.range, "i", "r"))
+qqnorm(as.vector(sampled.data), main = "", datax = TRUE, ylab = "Value", pch = 1, col = "red", cex = cex.pt / 0.2)
+fun.rug()
+if(diff(quantile(as.vector(data), probs = c(0.25, 0.75), na.rm = TRUE)) != 0){ # otherwise, error generated
+qqline(as.vector(data), datax = TRUE)
+}
+if(interval.scale.disp == TRUE){
+fun.interval.scale.display(data.f = data)
+}
+fun.add.cut(data.f = data)
+}
+if(trim.return == TRUE){
+return(output)
+}
+}
+
+
+######## fun_segmentation() #### segment a dot cloud on a scatterplot and define the dots from another cloud outside the segmentation
+
+
+# Check OK: clear to go Apollo
+fun_segmentation <- function(data1, x1, y1, x.range.split = NULL, x.step.factor = 10, y.range.split = NULL, y.step.factor = 10, error = 0, data2 = NULL, x2, y2, data2.pb.dot = "unknown", xy.cross.kind = "&", plot = FALSE, graph.in.file = FALSE, raster = TRUE, warn.print = FALSE, path.lib = NULL){
+# AIM
+# if data1 is a data frame corresponding to the data set of a scatterplot (with a x column for x-axis values and a y column for the y-axis column), then fun_segmentation() delimits a frame around the dots cloud using a sliding window set by x.range.split and x.step.factor to frame the top and bottom part of the cloud, and set by y.range.split and y.step.factor to frame the left and right part of the cloud
+# if a second data frame is provided, corresponding to the data set of a scatterplot (with a x column for x-axis values and a y column for the y-axis column), then fun_segmentation() defines the dots of this data frame, outside of the frame of the first data frame
+# WARNINGS
+# if dots from data2 look significant on the graph (outside the frame) but are not (not black on the last figure), this is probably because the frame is flat on the zero coordinate (no volume inside the frame at this position). Thus, no way to conclude that data2 dots here are significant. These dots are refered to as "unknown". The pb.dot argument deals with such dots
+# dots that are sometimes inside and outside the frame, depending on the sliding windows, are treated differently: they are removed. Such dots are neither classified as "signif", "non signif" or "unknown", but as "inconsistent"
+# unknown dots are treated as finally significant, not significant, or unknown (data2.pb.dot argument) for each x-axis and y-axis separately. Then, the union or intersection of significant dots is performed (argument xy.cross.kind). See the example section
+# ARGUMENTS
+# data1: a dataframe containing a column of x-axis values and a column of y-axis values
+# x1: character string of the data1 column name for x-axis (first column of data1 by default)
+# y1: character string of the data1 column name for y-axis (second column of data1 by default)
+# x.range.split: positive non null numeric value giving the number of interval on the x value range. if x.range is the range of the dots on the x-axis, then abs(diff(x.range) / x.range.split) gives the window size. Window size decreases when range.split increases. In unit of x-axis. Write NULL if not required. At least one of the x.range.split and y.range.split must be non NULL
+# x.step.factor: positive non null numeric value giving the shift step of the window. If x.step.factor = 1, no overlap during the sliding (when the window slides from position n to position n+1, no overlap between the two positions). If x.step.factor = 2, 50% of overlap (when the window slides from position n to position n+1, the window on position n+1 overlap 50% of the window when it was on position n)
+# y.range.split: same as x.range.split for the y-axis. At least one of the x.range.split and y.range.split must be non NULL
+# y.step.factor: same as x.step.factor for the y-axis
+# error: proportion (from 0 to 1) of false positives (i.e., proportion of dots from data1 outside of the frame). 0.05 means 5% of the dots from data1 outside of the frame
+# data2: a dataframe containing a column of x-axis values and a column of y-axis values, for which outside dots of the data1 cloud has to be determined. Write NULL if not required
+# x2: character string of the data1 column name for x-axis (first column of data1 by default)
+# y2: character string of the data1 column name for y-axis (second column of data1 by default)
+# data2.pb.dot: unknown dots are explain in the warning section above. If "signif", then the unknown dots are finally considered as significant (outside the frame). If "not.signif", then the unknown dots are finally considered as non significant (inside the frame). If "unknown", no conclusion are drawn from these dots. See the examples below
+# xy.cross.kind: if data2 is non null and if both x.range.split and y.range.split are non null, which dots are finally significants? Write "&" for intersection of outside dots on x and on y. Write "|" for union of outside dots on x and on y. See the examples below
+# plot: logical. Print graphs that check the frame?
+# graph.in.file: logical. Graphs sent into a graphic device already opened? If FALSE, GUI are opened for each graph. If TRUE, no GUI are opended. The graphs are displayed on the current active graphic device. Ignored if plot is FALSE
+# raster: logical. Dots in raster mode? If FALSE, dots from each geom_point from geom argument are in vectorial mode (bigger pdf and long to display if millions of dots). If TRUE, dots from each geom_point from geom argument are in matricial mode (smaller pdf and easy display if millions of dots, but long to generate the layer). If TRUE, the region plot will be square to avoid a bug in fun_gg_point_rast(). If TRUE, solve the transparency problem with some GUI. Not considered if plot is FALSE
+# warn.print: logical. Print warnings at the end of the execution? No print if no warning messages
+# path.lib: absolute path of the required packages, if not in the default folders. Ignored if plot is FALSE
+# REQUIRED PACKAGES
+# ggplot2 if plot is TRUE
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# if plot is TRUE:
+# fun_pack()
+# fun_open()
+# fun_gg_palette()
+# fun_gg_scatter()
+# fun_gg_empty_graph()
+# fun_close()
+# RETURN
+# several graphs if plot is TRUE
+# a list containing:
+# $data1.removed.row.nb: which rows have been removed due to NA; NaN, -Inf or Inf detection in x1 or y1 columns (NULL if no row removed)
+# $data1.removed.rows: removed rows (NULL if no row removed)
+# $data2.removed.row.nb: which rows have been removed due to NA; NaN, -Inf or Inf detection in x2 or y2 columns (NULL if no row removed)
+# $data2.removed.rows: removed rows (NULL if no row removed)
+# $hframe: x and y coordinates of the bottom and top frames for frame plotting (frame1 for the left step and frame2 for the right step)
+# $vframe: x and y coordinates of the left and right frames for frame plotting (frame1 for the down step and frame2 for the top step)
+# $data1.signif.dot: the significant dots of data1 (i.e., dots outside the frame). A good segmentation should not have any data1.signif.dot
+# $data1.non.signif.dot: the non significant dots of data1 (i.e., dots inside the frame)
+# $data1.inconsistent.dot: see the warning section above
+# $data2.signif.dot: the significant dots of data2 if non NULL (i.e., dots outside the frame)
+# $data2.non.signif.dot: the non significant dots of data2 (i.e., dots inside the frame)
+# $data2.unknown.dot: the problematic dots of data2 (i.e., data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots). Is systematically NULL except if argument data2.pb.dot = "unknown" and some data2 dots are in such situation. Modifying the segmentation x.range.split, x.step.factor, y.range.split, y.step.factor arguments can solve this problem
+# $data2.inconsistent.dot: see the warning section above
+# $axes: the x-axis and y-axis info
+# $warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# example explaining the unknown and inconsistent dots, and the cross 
+
+# set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data1[5:7, 2] <- NA ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; data2[11:13, 1] <- Inf ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = 20, x.step.factor = 10, y.range.split = 23, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "not.signif", xy.cross.kind = "|", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
+# set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = NULL, x.step.factor = 10, y.range.split = 23, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "unknown", xy.cross.kind = "|", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
+# set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; fun_segmentation(data1 = data1, x1 = names(data1)[1], y1 = names(data1)[2], x.range.split = 20, x.step.factor = 10, y.range.split = NULL, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], data2.pb.dot = "unknown", xy.cross.kind = "&", plot = TRUE, graph.in.file = FALSE, raster = FALSE, path.lib = NULL)
+# DEBUGGING
+# set.seed(1) ; data1 = data.frame(x = rnorm(50), y = rnorm(50)) ; data1[5:7, 2] <- NA ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = 5 ; x.step.factor = 10 ; y.range.split = 5 ; y.step.factor = 10 ; error = 0 ; data2 = data.frame(x = rnorm(50, 0, 2), y = rnorm(50, 0, 2)) ; set.seed(NULL) ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "|" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
+# set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = NULL ; x.step.factor = 10 ; y.range.split = 23 ; y.step.factor = 10 ; error = 0 ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "|" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
+# set.seed(1) ; data1 = data.frame(x = rnorm(500), y = rnorm(500)) ; data2 = data.frame(x = rnorm(500, 0, 2), y = rnorm(500, 0, 2)) ; set.seed(NULL) ; x1 = names(data1)[1] ; y1 = names(data1)[2] ; x.range.split = 20 ; x.step.factor = 10 ; y.range.split = NULL ; y.step.factor = 10 ; error = 0 ; x2 = names(data2)[1] ; y2 = names(data2)[2] ; data2.pb.dot = "unknown" ; xy.cross.kind = "&" ; plot = TRUE ; graph.in.file = FALSE ; raster = FALSE ; warn.print = TRUE ; path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+warning <- NULL
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & length(data1) < 2){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A DATA FRAME OF AT LEAST 2 COLUMNS\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = x1, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (x1 %in% names(data1))){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x1 ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & x1 %in% names(data1)){
+tempo <- fun_check(data = data1[, x1], data.name = "x1 COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = y1, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (y1 %in% names(data1))){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y1 ARGUMENT MUST BE A COLUMN NAME OF data1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & y1 %in% names(data1)){
+tempo <- fun_check(data = data1[, y1], data.name = "y1 COLUMN OF data1", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+if(is.null(x.range.split) & is.null(y.range.split)){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": AT LEAST ONE OF THE x.range.split AND y.range.split ARGUMENTS MUST BE NON NULL\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(x.range.split)){
+tempo <- fun_check(data = x.range.split, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & x.range.split < 1){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x.range.split ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(y.range.split)){
+tempo <- fun_check(data = y.range.split, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.range.split < 1){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y.range.split ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+tempo <- fun_check(data = x.step.factor, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & x.step.factor < 1){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x.step.factor ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = y.step.factor, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & y.step.factor < 1){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y.step.factor ARGUMENT CANNOT BE LOWER THAN 1\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = error, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(data2)){
+if(is.null(x2) | is.null(y2)){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x2 AND y2 ARGUMENTS CANNOT BE NULL IF data2 ARGUMENT IS NON NULL\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = data2, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & length(data2) < 2){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": data2 ARGUMENT MUST BE A DATA FRAME OF AT LEAST 2 COLUMNS\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(x2)){
+tempo <- fun_check(data = x2, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (x2 %in% names(data2))){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": x2 ARGUMENT MUST BE A COLUMN NAME OF data2\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & x2 %in% names(data2)){
+tempo <- fun_check(data = data2[, x2], data.name = "x2 COLUMN OF data2", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+}
+if( ! is.null(y2)){
+tempo <- fun_check(data = y2, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (y2 %in% names(data2))){
+cat(paste0("\n\n================\n\nERROR IN ", function.name, ": y2 ARGUMENT MUST BE A COLUMN NAME OF data2\n\n================\n\n"))
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & y2 %in% names(data2)){
+tempo <- fun_check(data = data2[, y2], data.name = "y2 COLUMN OF data2", class = "vector", mode = "numeric", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+}
+}
+if( ! is.null(data2)){
+tempo <- fun_check(data = data2.pb.dot, options = c("signif", "not.signif", "unknown"), length = 1, fun.name = function.name) ; eval(ee)
+}
+if( ! (is.null(x.range.split)) & ! (is.null(y.range.split))){
+tempo <- fun_check(data = xy.cross.kind, options = c("&", "|"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_check(data = plot, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = warn.print, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & plot == TRUE){
+tempo <- fun_check(data = raster, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = graph.in.file, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & graph.in.file == TRUE & is.null(dev.list())){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \ngraph.in.file PARAMETER SET TO TRUE BUT NO ACTIVE GRAPHIC DEVICE DETECTED\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}else if(tempo$problem == FALSE & graph.in.file == TRUE & ! is.null(dev.list())){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": GRAPHS PRINTED IN THE CURRENT DEVICE (TYPE ", toupper(names(dev.cur())), ")")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# other required function checking
+if(plot == TRUE){
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_open", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_gg_palette", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_palette() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_gg_empty_graph", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_empty_graph() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_gg_scatter", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_gg_scatter() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_close", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_close() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end other required function checking
+# package checking
+if(plot == TRUE){
+fun_pack(req.package = c("ggplot2"), path.lib = path.lib)
+}
+# end package checking
+# main code
+# na and Inf detection and removal (done now to be sure of the correct length of categ)
+data1.removed.row.nb <- NULL
+data1.removed.rows <- NULL
+data2.removed.row.nb <- NULL
+data2.removed.rows <- NULL
+if(any(is.na(data1[, c(x1, y1)])) | any(is.infinite(data1[, x1])) | any(is.infinite(data1[, y1]))){
+tempo.na <- unlist(lapply(lapply(c(data1[c(x1, y1)]), FUN = is.na), FUN = which))
+tempo.inf <- unlist(lapply(lapply(c(data1[c(x1, y1)]), FUN = is.infinite), FUN = which))
+data1.removed.row.nb <- sort(unique(c(tempo.na, tempo.inf)))
+if(length(data1.removed.row.nb) > 0){
+data1.removed.rows <- data1[data1.removed.row.nb, ]
+}
+if(length(data1.removed.row.nb) == nrow(data1)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": AT LEAST ONE NA, NaN, -Inf OR Inf DETECTED IN EACH ROW OF data1. FUNCTION CANNOT BE USED ON EMPTY DATA FRAME\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(length(data1.removed.row.nb) > 0){
+data1 <- data1[-data1.removed.row.nb, ]
+}
+if(nrow(data1) == 0){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 1\n\n============\n\n"))
+stop(tempo.cat)
+}
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x1, y1), collapse = " "), " OF data1 AND CORRESPONDING ROWS REMOVED (SEE $data1.removed.row.nb AND $data1.removed.rows)")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NO NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x1, y1), collapse = " "), " OF data1. NO ROW REMOVED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+if( ! is.null(data2)){
+if(any(is.na(data2[, c(x2, y2)])) | any(is.infinite(data2[, x2])) | any(is.infinite(data2[, y2]))){
+tempo.na <- unlist(lapply(lapply(c(data2[c(x2, y2)]), FUN = is.na), FUN = which))
+tempo.inf <- unlist(lapply(lapply(c(data2[c(x2, y2)]), FUN = is.infinite), FUN = which))
+data2.removed.row.nb <- sort(unique(c(tempo.na, tempo.inf)))
+if(length(data2.removed.row.nb) > 0){
+data2.removed.rows <- data2[data2.removed.row.nb, ]
+}
+if(length(data2.removed.row.nb) == nrow(data2)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": AT LEAST ONE NA, NaN, -Inf OR Inf DETECTED IN EACH ROW OF data2. FUNCTION CANNOT BE USED ON EMPTY DATA FRAME\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(length(data2.removed.row.nb) > 0){
+data2 <- data2[-data2.removed.row.nb, ]
+}
+if(nrow(data2) == 0){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 2\n\n============\n\n"))
+stop(tempo.cat)
+}
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x2, y2), collapse = " "), " OF data2 AND CORRESPONDING ROWS REMOVED (SEE $data2.removed.row.nb AND $data2.removed.rows)")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}else{
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": NO NA, NaN, -Inf OR Inf DETECTED IN COLUMN ", paste(c(x2, y2), collapse = " "), " OF data2. NO ROW REMOVED")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+# end na and Inf detection and removal (done now to be sure of the correct length of categ)
+# row annotation (dot number)
+# data1 <- data1[ ! duplicated(data1[, c(x1, y1)]), ] # do not remove the dots that have same x and y values, because they will have different dot number -> not the same position on the matrices (so true for symmetric matrices)
+data1 <- cbind(data1, DOT_NB = 1:nrow(data1))
+if( ! is.null(data2)){
+# data2 <- data2[ ! duplicated(data2[, c(x2, y2)]), ] # do not remove the dots that have same x and y values, because they will have different dot number -> not the same position on the matrices (so true for symmetric matrices)
+data2 <- cbind(data2, DOT_NB = 1:nrow(data2))
+}
+# end row annotation (dot number)
+
+
+
+
+# Method using x unit interval 
+# may be create vector of each column to increase speed
+x.data1.l <- NULL # x coord of the y upper and lower limits defined on the data1 cloud for left step line
+x.data1.r <- NULL # x coord of the y upper and lower limits defined on the data1 cloud for right step line
+y.data1.down.limit.l <- NULL # lower limit of the data1 cloud for left step line
+y.data1.top.limit.l <- NULL # upper limit of the data1 cloud for left step line
+y.data1.down.limit.r <- NULL # lower limit of the data1 cloud for right step line
+y.data1.top.limit.r <- NULL # upper limit of the data1 cloud for left step line
+if(any(data1[, x1] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE x1 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+x.range <- range(data1[, x1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+if(suppressWarnings(any(x.range %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED x.range CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+if(any(data1[, y1] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data1 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y1 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+y.range <- range(data1[, y1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+if(suppressWarnings(any(x.range %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED y.range CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+x.range.plot <- range(data1[, x1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+y.range.plot <- range(data1[, y1], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+if( ! is.null(data2)){
+if(any(data2[, x2] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE x2 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+x.range.plot <- range(data1[, x1], data2[, x2], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+if(any(data2[, y2] %in% c(Inf, -Inf))){
+tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE data2 ARGUMENT CONTAINS -Inf OR Inf VALUES IN THE y2 COLUMN, THAT WILL NOT BE CONSIDERED IN THE PLOT RANGE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+y.range.plot <- range(data1[, y1], data2[, y2], na.rm = TRUE, finite = TRUE) # finite = TRUE removes all the -Inf and Inf except if only this. In that case, whatever the -Inf and/or Inf present, output -Inf;Inf range. Idem with NA only
+}
+if(suppressWarnings(any(x.range.plot %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED x.range.plot CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 (AND data2?) ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+if(suppressWarnings(any(y.range.plot %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " COMPUTED y.range.plot CONTAINS Inf VALUES, BECAUSE VALUES FROM data1 (AND data2?) ARGUMENTS ARE NA OR Inf ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(x.range.split)){
+# data.frame ordering to slide the window from small to big values + sliding window definition
+data1 <- data1[order(data1[, x1], na.last = TRUE), ]
+if( ! is.null(data2)){
+data2 <- data2[order(data2[, x2], na.last = TRUE), ]
+}
+x.win.size <- abs(diff(x.range) / x.range.split) # in unit of x-axis
+step <- x.win.size / x.step.factor
+# end data.frame ordering to slide the window from small to big values + sliding window definition
+# x-axis sliding and y-axis limits of the data1 cloud -> y significant data2
+loop.nb <- ceiling((diff(x.range) - x.win.size) / step) # x.win.size + n * step covers the x range if x.win.size + n * step >= diff(x.range), thus if n >= (diff(x.range) - x.win.size) / step 
+y.outside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are upper or lower than the frame
+y.inside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are not upper or lower than the frame
+y.data1.median <- median(data1[, y1], na.rm = TRUE) # will be used for sliding windows without data1 in it
+if( ! is.null(data2)){
+y.outside.data2.dot.nb <- integer() # vector that will contain the selected 1D coordinates (i.e., dots) of data2 that are upper or lower than the data1 frame
+y.inside.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are not upper or lower than the data1 frame
+y.unknown.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are problematic: data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots
+# recover data2 dots outside the range of data1
+if(any(data2[, x2] < x.range[1])){
+y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[data2[, x2] < x.range[1]])
+#tempo.warning & indicate the interval
+}
+if(any(data2[, x2] > x.range[2])){
+y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[data2[, x2] > x.range[2]])
+#tempo.warning & indicate the interval
+}
+# end recover data2 dots outside the range of data1
+}
+# loop.ini.time <- as.numeric(Sys.time())
+for(i1 in 0:(loop.nb + 1)){
+min.pos <- x.range[1] + step * i1 # lower position of the sliding window in data1
+max.pos <- min.pos + x.win.size # upper position of the sliding window in data1
+x.data1.l <- c(x.data1.l, min.pos, min.pos + step) # min.pos + step to make the steps
+x.data1.r <- c(x.data1.r, max.pos, max.pos + step) # max.pos + step to make the steps
+x.data1.dot.here <- data1[, x1] >= min.pos & data1[, x1] < max.pos # is there data1 dot present in the sliding window, considering the x axis?
+if( ! is.null(data2)){
+x.data2.dot.here <- data2[, x2] >= min.pos & data2[, x2] < max.pos # is there data2 dot present in the sliding window, considering the x axis?
+}
+# recover the data1 dots outside the frame
+if(any(x.data1.dot.here == TRUE)){
+tempo.y.data1.top.limit <- quantile(data1[x.data1.dot.here, y1], probs = 1 - error, na.rm = TRUE)
+tempo.y.data1.down.limit <- quantile(data1[x.data1.dot.here, y1], probs = 0 + error, na.rm = TRUE)
+y.data1.top.limit.l <- c(y.data1.top.limit.l, tempo.y.data1.top.limit, tempo.y.data1.top.limit)
+y.data1.down.limit.l <- c(y.data1.down.limit.l, tempo.y.data1.down.limit, tempo.y.data1.down.limit)
+y.data1.top.limit.r <- c(y.data1.top.limit.r, tempo.y.data1.top.limit, tempo.y.data1.top.limit)
+y.data1.down.limit.r <- c(y.data1.down.limit.r, tempo.y.data1.down.limit, tempo.y.data1.down.limit)
+y.data1.dot.signif <- ( ! ((data1[, y1] <= tempo.y.data1.top.limit) & (data1[, y1] >= tempo.y.data1.down.limit))) & x.data1.dot.here # is there data1 dot present in the sliding window, above or below the data1 limits, considering the y axis?
+y.data1.dot.not.signif <- x.data1.dot.here & ! y.data1.dot.signif
+y.outside.data1.dot.nb <- c(y.outside.data1.dot.nb, data1$DOT_NB[y.data1.dot.signif]) # recover the row number of data1
+y.outside.data1.dot.nb <- unique(y.outside.data1.dot.nb)
+y.inside.data1.dot.nb <- c(y.inside.data1.dot.nb, data1$DOT_NB[y.data1.dot.not.signif])
+y.inside.data1.dot.nb <- unique(y.inside.data1.dot.nb)
+}else{
+y.data1.top.limit.l <- c(y.data1.top.limit.l, y.data1.median, y.data1.median)
+y.data1.down.limit.l <- c(y.data1.down.limit.l, y.data1.median, y.data1.median)
+y.data1.top.limit.r <- c(y.data1.top.limit.r, y.data1.median, y.data1.median)
+y.data1.down.limit.r <- c(y.data1.down.limit.r, y.data1.median, y.data1.median)
+}
+# end recover the data1 dots outside the frame
+# recover the data2 dots outside the frame
+if( ! is.null(data2)){
+if(any(x.data1.dot.here == TRUE) & any(x.data2.dot.here == TRUE)){ 
+y.data2.dot.signif <- ( ! ((data2[, y2] <= tempo.y.data1.top.limit) & (data2[, y2] >= tempo.y.data1.down.limit))) & x.data2.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the y axis?
+y.data2.dot.not.signif <- x.data2.dot.here & ! y.data2.dot.signif
+y.outside.data2.dot.nb <- c(y.outside.data2.dot.nb, data2$DOT_NB[y.data2.dot.signif])
+y.outside.data2.dot.nb <- unique(y.outside.data2.dot.nb)
+y.inside.data2.dot.nb <- c(y.inside.data2.dot.nb, data2$DOT_NB[y.data2.dot.not.signif])
+y.inside.data2.dot.nb <- unique(y.inside.data2.dot.nb)
+}else if(any(x.data1.dot.here == FALSE) & any(x.data2.dot.here == TRUE)){ # problem: data2 dots in the the windows but no data1 dots to generates the quantiles
+y.unknown.data2.dot.nb <- c(y.unknown.data2.dot.nb, data2$DOT_NB[x.data2.dot.here])
+y.unknown.data2.dot.nb <- unique(y.unknown.data2.dot.nb)
+#tempo.warning & indicate the interval
+
+
+
+
+# tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE [", round(min.pos, 3), " ; ", round(max.pos, 3), "] INTERVAL DOES NOT CONTAIN data1 X VALUES BUT CONTAINS data2 X VALUES WHICH CANNOT BE EVALUATED.\nTHE CONCERNED data2 ROW NUMBERS ARE:\n", paste(which(x.data1.dot.here == FALSE & x.data2.dot.here == TRUE), collapse = "\n"))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+# end recover the data2 dots outside the frame
+# if(any(i1 == seq(1, loop.nb, 500))){
+# loop.fin.time <- as.numeric(Sys.time()) # time of process end
+# cat(paste0("COMPUTATION TIME OF LOOP ", i1, " / ", loop.nb, ": ", as.character(lubridate::seconds_to_period(round(loop.fin.time - loop.ini.time))), "\n"))
+# }
+}
+if(max.pos < x.range[2]){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE SLIDING WINDOW HAS NOT REACHED THE MAX VALUE OF data1 ON THE X-AXIS: ", max.pos, " VERSUS ", x.range[2], "\n\n================\n\n")
+stop(tempo.cat)
+}
+y.incon.data1.dot.nb.final <- unique(c(y.outside.data1.dot.nb[y.outside.data1.dot.nb %in% y.inside.data1.dot.nb], y.inside.data1.dot.nb[y.inside.data1.dot.nb %in% y.outside.data1.dot.nb])) # inconsistent dots: if a row number of y.inside.data1.dot.nb is present in y.outside.data1.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
+y.outside.data1.dot.nb.final <- y.outside.data1.dot.nb[ ! (y.outside.data1.dot.nb %in% y.incon.data1.dot.nb.final)] # inconsistent dots removed from the outside list
+y.inside.data1.dot.nb.final <- y.inside.data1.dot.nb[ ! (y.inside.data1.dot.nb %in% y.incon.data1.dot.nb.final)] # inconsistent dots removed from the inside list
+if( ! is.null(data2)){
+# if some unknown dots are also inside, and/or outside, they are put in the inside and/or outside. Ok, because then the intersection between inside and outside is treated -> inconsistent dots
+tempo.unknown.out <- y.unknown.data2.dot.nb[y.unknown.data2.dot.nb %in% y.outside.data2.dot.nb]
+y.outside.data2.dot.nb <- unique(c(y.outside.data2.dot.nb, tempo.unknown.out)) # if a row number of y.unknown.data2.dot.nb is present in y.outside.data2.dot.nb, it is put into outside
+tempo.unknown.in <- y.unknown.data2.dot.nb[y.unknown.data2.dot.nb %in% y.inside.data2.dot.nb]
+y.inside.data2.dot.nb <- unique(c(y.inside.data2.dot.nb, tempo.unknown.in)) # if a row number of y.unknown.data2.dot.nb is present in y.inside.data2.dot.nb, it is put into inside
+y.unknown.data2.dot.nb.final <- y.unknown.data2.dot.nb[ ! (y.unknown.data2.dot.nb %in% c(y.outside.data2.dot.nb, y.inside.data2.dot.nb))] # then dots also in inside and outside are remove from unknown
+y.incon.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb[y.outside.data2.dot.nb %in% y.inside.data2.dot.nb], y.inside.data2.dot.nb[y.inside.data2.dot.nb %in% y.outside.data2.dot.nb])) # inconsistent dots: if a row number of y.inside.data2.dot.nb is present in y.outside.data2.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
+y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb[ ! (y.outside.data2.dot.nb %in% y.incon.data2.dot.nb.final)] # inconsistent dots removed from the outside list
+y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb[ ! (y.inside.data2.dot.nb %in% y.incon.data2.dot.nb.final)] # inconsistent dots removed from the inside list
+}
+# end x-axis sliding and y-axis limits of the data1 cloud -> y significant data2
+}
+# end Method using x unit interval 
+
+
+
+
+# Method using y unit interval 
+y.data1.d <- NULL # y coord of the x upper and lower limits defined on the data1 cloud for down step line
+y.data1.t <- NULL # y coord of the x upper and lower limits defined on the data1 cloud for top step line
+x.data1.left.limit.d <- NULL # left limit of the data1 cloud for down step line
+x.data1.right.limit.d <- NULL # right limit of the data1 cloud for down step line
+x.data1.left.limit.t <- NULL # left limit of the data1 cloud for top step line
+x.data1.right.limit.t <- NULL # right limit of the data1 cloud for top step line
+if( ! is.null(y.range.split)){
+# data.frame ordering to slide the window from small to big values + sliding window definition
+data1 <- data1[order(data1[, y1], na.last = TRUE), ]
+if( ! is.null(data2)){
+data2 <- data2[order(data2[, y2], na.last = TRUE), ]
+}
+y.win.size <- abs(diff(y.range) / y.range.split) # in unit of y-axis
+step <- y.win.size / y.step.factor
+# end data.frame ordering to slide the window from small to big values + sliding window definition
+# y-axis sliding and x-axis limits of the data1 cloud -> x significant data2
+loop.nb <- ceiling((diff(y.range) - y.win.size) / step) # y.win.size + n * step covers the y range if y.win.size + n * step >= diff(y.range), thus if n >= (diff(y.range) - y.win.size) / step 
+x.outside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are upper or lower than the frame
+x.inside.data1.dot.nb <- integer() # vector that will contain the selected rows numbers of data1 that are not upper or lower than the frame
+x.data1.median <- median(data1[, x1], na.rm = TRUE) # will be used for sliding windows without data1 in it
+if( ! is.null(data2)){
+x.outside.data2.dot.nb <- integer() # vector that will contain the selected 1D coordinates (i.e., dots) of data2 that are upper or lower than the data1 frame
+x.inside.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are not upper or lower than the data1 frame
+x.unknown.data2.dot.nb <- integer() # vector that will contain the 1D coordinates (i.e., dots) of data2 that are problematic: data2 dots outside of the range of data1, or data2 dots in a sliding window without data1 dots
+# recover data2 dots outside the range of data1
+if(any(data2[, y2] < y.range[1])){
+x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[data2[, y2] < y.range[1]])
+}
+if(any(data2[, y2] > y.range[2])){
+x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[data2[, y2] > y.range[2]])
+}
+# end recover data2 dots outside the range of data1
+}
+# loop.ini.time <- as.numeric(Sys.time())
+for(i1 in 0:(loop.nb + 1)){
+min.pos <- y.range[1] + step * i1 # lower position of the sliding window in data1
+max.pos <- min.pos + y.win.size # upper position of the sliding window in data1
+y.data1.d <- c(y.data1.d, min.pos, min.pos + step) # min.pos + step to make the steps
+y.data1.t <- c(y.data1.t, max.pos, max.pos + step) # max.pos + step to make the steps
+y.data1.dot.here <- data1[, y1] >= min.pos & data1[, y1] < max.pos # is there data1 dot present in the sliding window, considering the y axis?
+if( ! is.null(data2)){
+y.data2.dot.here <- data2[, y2] >= min.pos & data2[, y2] < max.pos # is there data2 dot present in the sliding window, considering the y axis?
+}
+# recover the data1 dots outside the frame
+if(any(y.data1.dot.here == TRUE)){
+tempo.x.data1.right.limit <- quantile(data1[y.data1.dot.here, x1], probs = 1 - error, na.rm = TRUE)
+tempo.x.data1.left.limit <- quantile(data1[y.data1.dot.here, x1], probs = 0 + error, na.rm = TRUE)
+x.data1.right.limit.d <- c(x.data1.right.limit.d, tempo.x.data1.right.limit, tempo.x.data1.right.limit)
+x.data1.left.limit.d <- c(x.data1.left.limit.d, tempo.x.data1.left.limit, tempo.x.data1.left.limit)
+x.data1.right.limit.t <- c(x.data1.right.limit.t, tempo.x.data1.right.limit, tempo.x.data1.right.limit)
+x.data1.left.limit.t <- c(x.data1.left.limit.t, tempo.x.data1.left.limit, tempo.x.data1.left.limit)
+x.data1.dot.signif <- ( ! ((data1[, x1] <= tempo.x.data1.right.limit) & (data1[, x1] >= tempo.x.data1.left.limit))) & y.data1.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the x axis?
+x.data1.dot.not.signif <- y.data1.dot.here & ! x.data1.dot.signif
+x.outside.data1.dot.nb <- c(x.outside.data1.dot.nb, data1$DOT_NB[x.data1.dot.signif]) # recover the row number of data1
+x.outside.data1.dot.nb <- unique(x.outside.data1.dot.nb)
+x.inside.data1.dot.nb <- c(x.inside.data1.dot.nb, data1$DOT_NB[x.data1.dot.not.signif])
+x.inside.data1.dot.nb <- unique(x.inside.data1.dot.nb)
+}else{
+x.data1.right.limit.d <- c(x.data1.right.limit.d, x.data1.median, x.data1.median)
+x.data1.left.limit.d <- c(x.data1.left.limit.d, x.data1.median, x.data1.median)
+x.data1.right.limit.t <- c(x.data1.right.limit.t, x.data1.median, x.data1.median)
+x.data1.left.limit.t <- c(x.data1.left.limit.t, x.data1.median, x.data1.median)
+}
+# end recover the data1 dots outside the frame
+# recover the data2 dots outside the frame
+if( ! is.null(data2)){
+if(any(y.data1.dot.here == TRUE) & any(y.data2.dot.here == TRUE)){ 
+x.data2.dot.signif <- ( ! ((data2[, x2] <= tempo.x.data1.right.limit) & (data2[, x2] >= tempo.x.data1.left.limit))) & y.data2.dot.here # is there data2 dot present in the sliding window, above or below the data1 limits, considering the x axis?
+x.data2.dot.not.signif <- y.data2.dot.here & ! x.data2.dot.signif
+x.outside.data2.dot.nb <- c(x.outside.data2.dot.nb, data2$DOT_NB[x.data2.dot.signif])
+x.outside.data2.dot.nb <- unique(x.outside.data2.dot.nb)
+x.inside.data2.dot.nb <- c(x.inside.data2.dot.nb, data2$DOT_NB[x.data2.dot.not.signif])
+x.inside.data2.dot.nb <- unique(x.inside.data2.dot.nb)
+}else if(any(y.data1.dot.here == FALSE) & any(y.data2.dot.here == TRUE)){ # recover the data2 dots outside the range of the data1 cloud
+x.unknown.data2.dot.nb <- c(x.unknown.data2.dot.nb, data2$DOT_NB[y.data2.dot.here])
+x.unknown.data2.dot.nb <- unique(x.unknown.data2.dot.nb)
+
+
+
+# tempo.warning <- paste0("FROM FUNCTION ", function.name, ": THE [", round(min.pos, 3), " ; ", round(max.pos, 3), "] INTERVAL DOES NOT CONTAIN data1 Y VALUES BUT CONTAINS data2 Y VALUES WHICH CANNOT BE EVALUATED.\nTHE CONCERNED data2 ROW NUMBERS ARE:\n", paste(which(y.data1.dot.here == FALSE & y.data2.dot.here == TRUE), collapse = "\n"))
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+}
+# end recover the data2 dots outside the frame
+# if(any(i1 == seq(1, loop.nb, 500))){
+# loop.fin.time <- as.numeric(Sys.time()) # time of process end
+# cat(paste0("COMPUTATION TIME OF LOOP ", i1, " / ", loop.nb, ": ", as.character(lubridate::seconds_to_period(round(loop.fin.time - loop.ini.time))), "\n"))
+# }
+}
+if(max.pos < y.range[2]){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": THE SLIDING WINDOW HAS NOT REACHED THE MAX VALUE OF data1 ON THE Y-AXIS: ", max.pos, " VERSUS ", y.range[2], "\n\n================\n\n")
+stop(tempo.cat)
+}
+x.incon.data1.dot.nb.final <- unique(c(x.outside.data1.dot.nb[x.outside.data1.dot.nb %in% x.inside.data1.dot.nb], x.inside.data1.dot.nb[x.inside.data1.dot.nb %in% x.outside.data1.dot.nb])) # inconsistent dots: if a row number of x.inside.data1.dot.nb is present in x.outside.data1.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
+x.outside.data1.dot.nb.final <- x.outside.data1.dot.nb[ ! (x.outside.data1.dot.nb %in% x.incon.data1.dot.nb.final)] # inconsistent dots removed from the outside list
+x.inside.data1.dot.nb.final <- x.inside.data1.dot.nb[ ! (x.inside.data1.dot.nb %in% x.incon.data1.dot.nb.final)] # inconsistent dots removed from the inside list
+if( ! is.null(data2)){
+# if some unknown dots are also inside, and/or outside, they are put in the inside and/or outside. Ok, because then the intersection between inside and outside is treated -> inconsistent dots
+tempo.unknown.out <- x.unknown.data2.dot.nb[x.unknown.data2.dot.nb %in% x.outside.data2.dot.nb]
+x.outside.data2.dot.nb <- unique(c(x.outside.data2.dot.nb, tempo.unknown.out)) # if a row number of x.unknown.data2.dot.nb is present in x.outside.data2.dot.nb, it is put into outside
+tempo.unknown.in <- x.unknown.data2.dot.nb[x.unknown.data2.dot.nb %in% x.inside.data2.dot.nb]
+x.inside.data2.dot.nb <- unique(c(x.inside.data2.dot.nb, tempo.unknown.in)) # if a row number of x.unknown.data2.dot.nb is present in x.inside.data2.dot.nb, it is put into inside
+x.unknown.data2.dot.nb.final <- x.unknown.data2.dot.nb[ ! (x.unknown.data2.dot.nb %in% c(x.outside.data2.dot.nb, x.inside.data2.dot.nb))] # then dots also in inside and outside are remove from unknown
+x.incon.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb[x.outside.data2.dot.nb %in% x.inside.data2.dot.nb], x.inside.data2.dot.nb[x.inside.data2.dot.nb %in% x.outside.data2.dot.nb])) # inconsistent dots: if a row number of x.inside.data2.dot.nb is present in x.outside.data2.dot.nb (and vice versa), it means that during the sliding, a dot has been sometime inside, sometime outside -> removed from the outside list
+x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb[ ! (x.outside.data2.dot.nb %in% x.incon.data2.dot.nb.final)] # inconsistent dots removed from the outside list
+x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb[ ! (x.inside.data2.dot.nb %in% x.incon.data2.dot.nb.final)] # inconsistent dots removed from the inside list
+}
+# end y-axis sliding and x-axis limits of the data1 cloud -> x significant data2
+}
+# end Method using y unit interval 
+
+
+
+# recovering the frame coordinates
+hframe = rbind(
+data.frame(
+x = if(is.null(x.data1.l)){NULL}else{x.data1.l}, 
+y = if(is.null(x.data1.l)){NULL}else{y.data1.down.limit.l}, 
+kind = if(is.null(x.data1.l)){NULL}else{"down.frame1"}
+), 
+data.frame(
+x = if(is.null(x.data1.r)){NULL}else{x.data1.r}, 
+y = if(is.null(x.data1.r)){NULL}else{y.data1.down.limit.r}, 
+kind = if(is.null(x.data1.r)){NULL}else{"down.frame2"}
+), 
+data.frame(
+x = if(is.null(x.data1.l)){NULL}else{x.data1.l}, 
+y = if(is.null(x.data1.l)){NULL}else{y.data1.top.limit.l}, 
+kind = if(is.null(x.data1.l)){NULL}else{"top.frame1"}
+), 
+data.frame(
+x = if(is.null(x.data1.r)){NULL}else{x.data1.r}, 
+y = if(is.null(x.data1.r)){NULL}else{y.data1.top.limit.r}, 
+kind = if(is.null(x.data1.r)){NULL}else{"top.frame2"}
+)
+)
+vframe = rbind(
+data.frame(
+x = if(is.null(y.data1.d)){NULL}else{x.data1.left.limit.d}, 
+y = if(is.null(y.data1.d)){NULL}else{y.data1.d}, 
+kind = if(is.null(y.data1.d)){NULL}else{"left.frame1"}
+), 
+data.frame(
+x = if(is.null(y.data1.t)){NULL}else{x.data1.left.limit.t}, 
+y = if(is.null(y.data1.t)){NULL}else{y.data1.t}, 
+kind = if(is.null(y.data1.t)){NULL}else{"left.frame2"}
+), 
+data.frame(
+x = if(is.null(y.data1.d)){NULL}else{x.data1.right.limit.d}, 
+y = if(is.null(y.data1.d)){NULL}else{y.data1.d}, 
+kind = if(is.null(y.data1.d)){NULL}else{"right.frame1"}
+),
+data.frame(
+x = if(is.null(y.data1.t)){NULL}else{x.data1.right.limit.t}, 
+y = if(is.null(y.data1.t)){NULL}else{y.data1.t}, 
+kind = if(is.null(y.data1.t)){NULL}else{"right.frame2"}
+)
+)
+# end recovering the frame coordinates
+# recovering the dot coordinates
+data1.signif.dot <- NULL
+data1.non.signif.dot <- NULL
+data1.incon.dot <- NULL
+data2.signif.dot <- NULL
+data2.non.signif.dot <- NULL
+data2.unknown.dot <- NULL
+data2.incon.dot <- NULL
+if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
+# inconsistent dots recovery 
+if(length(unique(c(x.incon.data1.dot.nb.final, y.incon.data1.dot.nb.final))) > 0){
+data1.incon.dot <- data1[data1$DOT_NB %in% unique(c(x.incon.data1.dot.nb.final, y.incon.data1.dot.nb.final)), ] # if a dot in inconsistent in x or y -> classified as inconsistent (so unique() used)
+# removal of the inconsistent dot in the other classifications
+x.inside.data1.dot.nb.final <- x.inside.data1.dot.nb.final[ ! x.inside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+y.inside.data1.dot.nb.final <- y.inside.data1.dot.nb.final[ ! y.inside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+x.outside.data1.dot.nb.final <- x.outside.data1.dot.nb.final[ ! x.outside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+y.outside.data1.dot.nb.final <- y.outside.data1.dot.nb.final[ ! y.outside.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+x.unknown.data1.dot.nb.final <- x.unknown.data1.dot.nb.final[ ! x.unknown.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+y.unknown.data1.dot.nb.final <- y.unknown.data1.dot.nb.final[ ! y.unknown.data1.dot.nb.final %in% data1.incon.dot$DOT_NB]
+# end removal of the inconsistent dot in the other classifications
+}
+if( ! is.null(data2)){
+if(length(unique(c(x.incon.data2.dot.nb.final, y.incon.data2.dot.nb.final))) > 0){
+data2.incon.dot <- data2[data2$DOT_NB %in% unique(c(x.incon.data2.dot.nb.final, y.incon.data2.dot.nb.final)), ]
+# removal of the inconsistent dot in the other classifications
+x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+x.unknown.data2.dot.nb.final <- x.unknown.data2.dot.nb.final[ ! x.unknown.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+y.unknown.data2.dot.nb.final <- y.unknown.data2.dot.nb.final[ ! y.unknown.data2.dot.nb.final %in% data2.incon.dot$DOT_NB]
+# end removal of the inconsistent dot in the other classifications
+}
+}
+# end inconsistent dots recovery 
+# unknown dots recovery 
+if( ! is.null(data2)){
+if(data2.pb.dot == "signif"){
+x.outside.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
+x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% x.unknown.data2.dot.nb.final] # remove x.unknown.data2.dot.nb.final from x.inside.data2.dot.nb.final
+y.outside.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
+y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% y.unknown.data2.dot.nb.final] # remove y.unknown.data2.dot.nb.final from y.inside.data2.dot.nb.final
+x.unknown.data2.dot.nb.final <- NULL
+y.unknown.data2.dot.nb.final <- NULL
+data2.unknown.dot <- NULL
+}else if(data2.pb.dot == "not.signif"){
+x.inside.data2.dot.nb.final <- unique(c(x.inside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
+x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% x.unknown.data2.dot.nb.final] # remove x.unknown.data2.dot.nb.final from x.outside.data2.dot.nb.final
+y.inside.data2.dot.nb.final <- unique(c(y.inside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
+y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% y.unknown.data2.dot.nb.final] # remove y.unknown.data2.dot.nb.final from y.outside.data2.dot.nb.final
+x.unknown.data2.dot.nb.final <- NULL
+y.unknown.data2.dot.nb.final <- NULL
+data2.unknown.dot <- NULL
+}else if(data2.pb.dot == "unknown"){
+if(length(unique(c(x.unknown.data2.dot.nb.final, y.unknown.data2.dot.nb.final))) > 0){
+data2.unknown.dot <- data2[data2$DOT_NB %in% unique(c(x.unknown.data2.dot.nb.final, y.unknown.data2.dot.nb.final)), ] # if a dot in unknown in x or y -> classified as unknown (so unique() used)
+x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb.final[ ! x.outside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove x.unknown.data2.dot.nb.final from x.outside.data2.dot.nb.final
+x.inside.data2.dot.nb.final <- x.inside.data2.dot.nb.final[ ! x.inside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove x.unknown.data2.dot.nb.final from x.inside.data2.dot.nb.final
+y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb.final[ ! y.outside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove y.unknown.data2.dot.nb.final from y.outside.data2.dot.nb.final
+y.inside.data2.dot.nb.final <- y.inside.data2.dot.nb.final[ ! y.inside.data2.dot.nb.final %in% data2.unknown.dot$DOT_NB] # remove y.unknown.data2.dot.nb.final from y.inside.data2.dot.nb.final
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 3\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end unknown dots recovery 
+# sign and non sign dot recovery
+if(xy.cross.kind == "|"){ # here the problem is to deal with significant dots depending on x and y. Thus I start with that, recover dots finally non significant in outside and put them in inside (when &), and remove from inside the dots in outside
+if(length(unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final))) > 0){
+tempo.outside <- unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final)) # union so unique() used
+tempo.inside <- unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final))
+tempo.inside <- tempo.inside[ ! tempo.inside %in% tempo.outside]
+data1.signif.dot <- data1[data1$DOT_NB %in% tempo.outside, ]
+data1.non.signif.dot <- data1[data1$DOT_NB %in% tempo.inside, ]
+}else{
+data1.non.signif.dot <- data1[unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
+}
+}else if(xy.cross.kind == "&"){
+if(sum(x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final) > 0){ # that is intersection
+tempo.outside <- unique(x.outside.data1.dot.nb.final[x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final]) # intersection
+tempo.outside.removed <- unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final))[ ! unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final)) %in% tempo.outside]
+tempo.inside <- unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final))
+data1.signif.dot <- data1[data1$DOT_NB %in% tempo.outside, ]
+data1.non.signif.dot <- data1[data1$DOT_NB %in% tempo.inside, ]
+}else{
+data1.non.signif.dot <- data1[unique(c(x.inside.data1.dot.nb.final, y.inside.data1.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 4\n\n============\n\n"))
+stop(tempo.cat)
+}
+if( ! is.null(data2)){
+if(xy.cross.kind == "|"){ # here the problem is to deal with significant dots depending on x and y. Thus I start with that, recover dots finally non significant in outside and put them in inside (when &), and remove from inside the dots in outside
+if(length(unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final))) > 0){
+tempo.outside <- unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final)) # union so unique() used
+tempo.inside <- unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final))
+tempo.inside <- tempo.inside[ ! tempo.inside %in% tempo.outside]
+data2.signif.dot <- data2[data2$DOT_NB %in% tempo.outside, ]
+data2.non.signif.dot <- data2[data2$DOT_NB %in% tempo.inside, ]
+}else{
+data2.non.signif.dot <- data2[unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
+}
+}else if(xy.cross.kind == "&"){
+if(sum(x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final) > 0){ # that is intersection
+tempo.outside <- unique(x.outside.data2.dot.nb.final[x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final]) # intersection
+tempo.outside.removed <- unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final))[ ! unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final)) %in% tempo.outside]
+tempo.inside <- unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final))
+data2.signif.dot <- data2[data2$DOT_NB %in% tempo.outside, ]
+data2.non.signif.dot <- data2[data2$DOT_NB %in% tempo.inside, ]
+}else{
+data2.non.signif.dot <- data2[unique(c(x.inside.data2.dot.nb.final, y.inside.data2.dot.nb.final)), ] # if no outside dots, I recover all the inside dots and that's it
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 5\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end sign and non sign dot recovery
+}else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
+# inconsistent dots recovery 
+if(length(y.incon.data1.dot.nb.final) > 0){
+data1.incon.dot <- data1[data1$DOT_NB %in% y.incon.data1.dot.nb.final, ]
+}
+if( ! is.null(data2)){
+if(length(y.incon.data2.dot.nb.final) > 0){
+data2.incon.dot <- data2[data2$DOT_NB %in% y.incon.data2.dot.nb.final, ]
+}
+}# end inconsistent dots recovery 
+# unknown dots recovery 
+if( ! is.null(data2)){
+if(data2.pb.dot == "signif"){
+y.outside.data2.dot.nb.final <- unique(c(y.outside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
+}else if(data2.pb.dot == "not.signif"){
+y.inside.data2.dot.nb.final <- unique(c(y.inside.data2.dot.nb.final, y.unknown.data2.dot.nb.final))
+}else if(data2.pb.dot == "unknown"){
+if(length(y.unknown.data2.dot.nb.final) > 0){
+data2.unknown.dot <- data2[data2$DOT_NB %in% y.unknown.data2.dot.nb.final, ]
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 6\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end unknown dots recovery 
+# sign and non sign dot recovery
+if(length(y.outside.data1.dot.nb.final) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% y.outside.data1.dot.nb.final, ]
+}
+if(length(y.inside.data1.dot.nb.final) > 0){
+data1.non.signif.dot <- data1[data1$DOT_NB %in% y.inside.data1.dot.nb.final, ]
+}
+if( ! is.null(data2)){
+if(length(y.outside.data2.dot.nb.final) > 0){
+data2.signif.dot <- data2[data2$DOT_NB %in% y.outside.data2.dot.nb.final, ]
+}
+if(length(y.inside.data2.dot.nb.final) > 0){
+data2.non.signif.dot <- data2[data2$DOT_NB %in% y.inside.data2.dot.nb.final, ]
+}
+}
+# end sign and non sign dot recovery
+}else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
+# inconsistent dots recovery 
+if(length(x.incon.data1.dot.nb.final) > 0){
+data1.incon.dot <- data1[data1$DOT_NB %in% x.incon.data1.dot.nb.final, ]
+}
+if( ! is.null(data2)){
+if(length(x.incon.data2.dot.nb.final) > 0){
+data2.incon.dot <- data2[data2$DOT_NB %in% x.incon.data2.dot.nb.final, ]
+}
+}# end inconsistent dots recovery 
+# unknown dots recovery 
+if( ! is.null(data2)){
+if(data2.pb.dot == "signif"){
+x.outside.data2.dot.nb.final <- unique(c(x.outside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
+}else if(data2.pb.dot == "not.signif"){
+x.inside.data2.dot.nb.final <- unique(c(x.inside.data2.dot.nb.final, x.unknown.data2.dot.nb.final))
+}else if(data2.pb.dot == "unknown"){
+if(length(x.unknown.data2.dot.nb.final) > 0){
+data2.unknown.dot <- data2[data2$DOT_NB %in% x.unknown.data2.dot.nb.final, ]
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 7\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end unknown dots recovery 
+# sign and non sign dot recovery
+if(length(x.outside.data1.dot.nb.final) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% x.outside.data1.dot.nb.final, ]
+}
+if(length(x.inside.data1.dot.nb.final) > 0){
+data1.non.signif.dot <- data1[data1$DOT_NB %in% x.inside.data1.dot.nb.final, ]
+}
+if( ! is.null(data2)){
+if(length(x.outside.data2.dot.nb.final) > 0){
+data2.signif.dot <- data2[data2$DOT_NB %in% x.outside.data2.dot.nb.final, ]
+}
+if(length(x.inside.data2.dot.nb.final) > 0){
+data2.non.signif.dot <- data2[data2$DOT_NB %in% x.inside.data2.dot.nb.final, ]
+}
+}
+# end sign and non sign dot recovery
+}
+# end recovering the dot coordinates
+# verif
+if(any(data1.signif.dot$DOT_NB %in% data1.non.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", FUNCTION.NAME, ": CODE INCONSISTENCY 8\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data1.non.signif.dot$DOT_NB %in% data1.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", FUNCTION.NAME, ": CODE INCONSISTENCY 9\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data1.signif.dot$DOT_NB %in% data1.incon.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 10\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data1.incon.dot$DOT_NB %in% data1.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 11\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data1.non.signif.dot$DOT_NB %in% data1.incon.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 12\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data1.incon.dot$DOT_NB %in% data1.non.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 13\n\n============\n\n"))
+stop(tempo.cat)
+}
+if( ! is.null(data2)){
+if(any(data2.signif.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 14\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.non.signif.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 15\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.signif.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 16\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.unknown.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 17\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.signif.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 18\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.incon.dot$DOT_NB %in% data2.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 19\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.non.signif.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 20\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.unknown.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 21\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.non.signif.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 22\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.incon.dot$DOT_NB %in% data2.non.signif.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 23\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.unknown.dot$DOT_NB %in% data2.incon.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 24\n\n============\n\n"))
+stop(tempo.cat)
+}
+if(any(data2.incon.dot$DOT_NB %in% data2.unknown.dot$DOT_NB)){
+tempo.cat <- (paste0("\n\n============\n\nERROR IN ", function.name, ": CODE INCONSISTENCY 25\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end verif
+# plot
+# recovering the axes data whatever plot or not
+if(is.null(data2)){
+axes <- fun_gg_scatter(data1 = list(data1), x = list(x1), y = list(y1), categ = list(NULL), color = list(fun_gg_palette(2)[2]), geom = list("geom_point"), alpha = list(0.5), xlim = x.range.plot, ylim = y.range.plot, raster = raster, plot = FALSE, return = TRUE)$axes
+}else{
+axes <- fun_gg_scatter(data1 = list(data1, data2), x = list(x1, x2), y = list(y1, y2), categ = list(NULL, NULL), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1]), geom = list("geom_point", "geom_point"), alpha = list(0.5, 0.5), xlim = x.range.plot, ylim = y.range.plot, raster = raster, plot = FALSE, return = TRUE)$axes
+}
+# end recovering the axes data whatever plot or not
+if(plot == TRUE){
+# add a categ for plot legend
+tempo.df.name <- c("data1", "data1.signif.dot", "data1.incon.dot", "data2", "data2.signif.dot", "data2.unknown.dot", "data2.incon.dot")
+tempo.class.name <- c("data1", "data1", "data1", "data2", "data2", "data2", "data2")
+for(i2 in 1:length(tempo.df.name)){
+if( ! is.null(get(tempo.df.name[i2]))){
+assign(tempo.df.name[i2], data.frame(get(tempo.df.name[i2]), kind = tempo.class.name[i2]))
+}
+}
+# end add a categ for plot legend
+if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe), x = list(x1, "x", "x"), y = list(y1, "y", "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data1.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe, data1.signif.dot), x = list(x1, "x", "x", x1), y = list(y1, "y", "y", y1), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data1.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe, data1.incon.dot), x = list(x1, "x", "x", x1), y = list(y1, "y", "y", y1), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME" , "VERT FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
+}
+if( ! is.null(data2)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, hframe , vframe), x = list(x1, x2, "x", "x"), y = list(y1, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data2.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
+}
+if( ! is.null(data2.unknown.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, hframe , vframe), x = list(x1, x2, x2, "x", "x"), y = list(y1, y2, y2, "y", "y"), categ = list("kind", "kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "HORIZ FRAME" , "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 12, title = "DATA2 + DATA2 UNKNOWN DOTS")
+}
+}
+}else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe), x = list(x1, "x"), y = list(y1, "y"), categ = list("kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_path"), alpha = list(0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data1.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data1.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, data1.incon.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "HORIZ FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
+}
+if( ! is.null(data2)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, hframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data2.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
+}
+if( ! is.null(data2.unknown.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, hframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "HORIZ FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.1, 0.15), v = c(0.75, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 8, title = "DATA2 + DATA2 UNKNOWN DOTS")
+}
+}
+}else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe), x = list(x1, "x"), y = list(y1, "y"), categ = list("kind", "kind"), legend.name = list("DATASET", "VERT FRAME"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_path"), alpha = list(0.5, 0.5), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data1.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "VERT FRAME", "SIGNIF DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), "black"), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data1.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe, data1.incon.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "VERT FRAME", "INCONSISTENT DOTS"), color = list(fun_gg_palette(2)[2], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2), fun_gg_palette(7)[6]), geom = list("geom_point", "geom_path", "geom_point"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA1 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA1\nINCONSISTENT DOTS", text.size = 8, title = "DATA1 + DATA1 INCONSISTENT DOTS")
+}
+if( ! is.null(data2)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, vframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list("kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+if( ! is.null(data2.signif.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.signif.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "SIGNIF DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], "black", rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2 DOTS\nOUTSIDE THE FRAMES", text.size = 8, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2.incon.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.incon.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "INCONSISTENT DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[6], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 INCONSISTENT DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nINCONSISTENT DOTS", text.size = 8, title = "DATA2 + DATA2 INCONSISTENT DOTS")
+}
+if( ! is.null(data2.unknown.dot)){
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, data2.unknown.dot, vframe), x = list(x1, x2, x2, "x"), y = list(y1, y2, y2, "y"), categ = list("kind", "kind", "kind", "kind"), legend.name = list("DATASET", "DATASET", "UNKNOWN DOTS", "VERT FRAME"), color = list(fun_gg_palette(2)[2], fun_gg_palette(2)[1], fun_gg_palette(7)[5], rep(hsv(h = c(0.5, 0.6), v = c(0.9, 1)), 2)), geom = list("geom_point", "geom_point", "geom_point", "geom_path"), alpha = list(0.5, 0.5, 0.5, 0.5), title = "DATA1 + DATA2 + DATA2 UNKNOWN DOTS", xlim = x.range.plot, ylim = y.range.plot, raster = raster, return = TRUE)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+if(graph.in.file == FALSE){
+fun_open(pdf.disp = FALSE)
+}
+fun_gg_empty_graph(text = "NO PLOT\nBECAUSE\nNO DATA2\nUNKNOWN DOTS", text.size = 8, title = "DATA2 + DATA2 UNKNOWN DOTS")
+}
+}
+}
+}
+# end plot
+if(warn.print == TRUE & ! is.null(warning)){
+warning(warning)
+}
+tempo.list <- list(data1.removed.row.nb = data1.removed.row.nb, data1.removed.rows = data1.removed.rows, data2.removed.row.nb = data2.removed.row.nb, data2.removed.rows = data2.removed.rows, hframe = hframe, vframe = vframe, data1.signif.dot = data1.signif.dot, data1.non.signif.dot = data1.non.signif.dot, data1.inconsistent.dot = data1.incon.dot, data2.signif.dot = data2.signif.dot, data2.non.signif.dot = data2.non.signif.dot, data2.unknown.dot = data2.unknown.dot, data2.inconsistent.dot = data2.incon.dot, axes = axes, warnings = warning)
+return(tempo.list)
+}
+
+
+################ Import
+
+
+######## fun_pack() #### check if R packages are present and import into the working environment
+
+
+# Check OK: clear to go Apollo
+fun_pack <- function(req.package, load = FALSE, path.lib = NULL){
+# AIM
+# check if the specified R packages are present in the computer and import them into the working environment
+# ARGUMENTS
+# req.package: character vector of package names to import
+# req.package: logical. Load the package into the environement (using library())?
+# path.lib: optional character vector specifying the absolute pathways of the directories containing some of the listed packages
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# RETURN
+# nothing
+# EXAMPLES
+# fun_pack(req.package = "nopackage")
+# fun_pack(req.package = "ggplot2")
+# fun_pack(req.package = "ggplot2", path.lib = "blablabla")
+# DEBUGGING
+# req.package = "ggplot2" ; path.lib = "C:/Program Files/R/R-3.5.1/library"
+# req.package = "serpentine" ; path.lib = "C:/users/gael/appdata/roaming/python/python36/site-packages"
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = req.package, class = "vector", mode = "character", fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = load, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# main code
+if(is.null(path.lib)){
+path.lib <- .libPaths() # .libPaths(new = path.lib) # or .libPaths(new = c(.libPaths(), path.lib))
+}else{
+.libPaths(new = sub(x = path.lib, pattern = "/$|\\\\$", replacement = "")) # .libPaths(new = ) add path to default path. BEWARE: .libPaths() does not support / at the end of a submitted path. Thus check and replace last / or \\ in path
+}
+for(i0 in 1:length(req.package)){
+if( ! req.package[i0] %in% rownames(installed.packages(lib.loc = path.lib))){
+stop(paste0("\n\n================\n\nERROR IN ", function.name, ": PACKAGE ", req.package[i0], " MUST BE INSTALLED IN:\n", paste(path.lib, collapse = "\n"), "\n\n================\n\n"))
+}else{
+if(load == TRUE){
+suppressWarnings(suppressPackageStartupMessages(library(req.package[i0], lib.loc = path.lib, quietly = TRUE, character.only = TRUE)))
+}
+}
+}
+}
+
+
+######## fun_python_pack() #### check if python packages are present
+
+
+# Check OK: clear to go Apollo
+fun_python_pack <- function(req.package, path.lib = NULL, R.path.lib = NULL){
+# AIM
+# check if the specified python packages are present in the computer (no import)
+# ARGUMENTS
+# req.package: character vector of package names to import
+# path.lib: optional character vector specifying the absolute pathways of the directories containing some of the listed packages in the req.package argument
+# R.path.lib: absolute path of the reticulate packages, if not in the default folders
+# REQUIRED PACKAGES
+# reticulate
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# fun_pack()
+# RETURN
+# nothing
+# EXAMPLES
+# example of error message
+# fun_python_pack(req.package = "nopackage")
+# example without error message (require the installation of the python serpentine package from https://github.com/koszullab/serpentine
+# fun_python_pack(req.package = "serpentine", path.lib = "c:/programdata/anaconda3/lib/site-packages/")
+# another example of error message
+# fun_python_pack(req.package = "serpentine", path.lib = "blablabla")
+# DEBUGGING
+# req.package = "serpentine" ; path.lib = "c:/programdata/anaconda3/lib/site-packages/" ; R.path.lib = NULL
+# req.package = "bad" ; path.lib = NULL ; R.path.lib = NULL
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = req.package, class = "character", fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_check(data = path.lib, class = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE path.lib PARAMETER DOES NOT EXISTS: ", path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if( ! is.null(R.path.lib)){
+tempo <- fun_check(data = R.path.lib, class = "character", fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(R.path.lib))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE R.path.lib PARAMETER DOES NOT EXISTS: ", R.path.lib, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# end argument checking
+# package checking
+fun_pack(req.package = "reticulate", path.lib = R.path.lib)
+# end package checking
+# main code
+if(is.null(path.lib)){
+path.lib <- reticulate::py_run_string("
+import sys ;
+path_lib = sys.path
+") # python string
+path.lib <- path.lib$path_lib
+}
+for(i0 in 1:length(req.package)){
+tempo.try <- vector("list", length = length(path.lib))
+for(i1 in 1:length(path.lib)){
+tempo.try[[i1]] <- suppressWarnings(try(reticulate::import_from_path(req.package[i0], path = path.lib[i1]), silent = TRUE))
+tempo.try[[i1]] <- suppressWarnings(try(reticulate::import_from_path(req.package[i0], path = path.lib[i1]), silent = TRUE)) # done twice to avoid the error message  about flushing present the first time but not the second time. see https://stackoverflow.com/questions/57357001/reticulate-1-13-error-in-sysstdoutflush-attempt-to-apply-non-function
+}
+if(all(sapply(tempo.try, FUN = grepl, pattern = "[Ee]rror"))){
+stop(paste0("\n\n================\n\nERROR IN ", function.name, ": PACKAGE ", req.package[i0], " MUST BE INSTALLED IN THE MENTIONNED DIRECTORY:\n", paste(path.lib, collapse = "\n"), "\n\n================\n\n"))
+}else{
+# suppressWarnings(suppressPackageStartupMessages(assign(req.package[i0], reticulate::import(req.package[i0])))) # not required because try() already evaluates
+}
+}
+}
+
+
+################ Exporting results (text & tables)
+
+
+######## fun_report() #### print string or data object into output file
+
+
+# Check OK: clear to go Apollo
+fun_report <- function(data = NULL, output ="results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, noquote = TRUE, sep = 2){
+# AIM
+# log file function: print a character string or a data object into a same output file
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_check()
+# ARGUMENTS
+# data: object to print in the output file. cannot be NULL
+# output: name of the output file
+# path: location of the output file
+# no.overwrite: (logical) if output file already exists, defines if the printing is appended (default TRUE) or if the output file content is erased before printing (FALSE)
+# rownames.kept: (logical) defines whether row names have to be removed or not in small tables (less than length.rows rows)
+# vector.cat (logical). If TRUE print a vector of length > 1 using cat() instead of capture.output(). Otherwise (default FALSE) the opposite
+# noquote: (logical). If TRUE no quote are present for the characters
+# sep: number of separating lines after printed data (must be integer)
+# RETURN
+# nothing
+# EXAMPLES
+# fun_report()
+# fun_report(data = 1:3, output = "results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, noquote = FALSE, sep = 2)
+# DEBUGGING
+# data = 1:3 ; output = "results.txt" ; path = "C:/Users/Gael/Desktop" ; no.overwrite = TRUE ; rownames.kept = FALSE ; vector.cat = FALSE ; noquote = FALSE ; sep = 2 # for function debugging
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_check()
+if(is.null(data)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT CANNOT BE NULL\n\n================\n\n")
+stop(tempo.cat)
+}
+# end argument checking without fun_check()
+# argument checking with fun_check()
+arg.check <- NULL # for function debbuging
+checked.arg.names <- NULL # for function debbuging: used by r_debugging_tools
+ee <- expression(arg.check <- c(arg.check, tempo$problem) , checked.arg.names <- c(checked.arg.names, tempo$param.name))
+tempo <- fun_check(data = output, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & output == ""){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": output ARGUMENT AS \"\" DOES NOT CORRESPOND TO A VALID FILE NAME\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = path, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & dir.exists(path) == FALSE){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": path ARGUMENT DOES NOT CORRESPOND TO EXISTING DIRECTORY\n", paste(path, collapse = "\n"),"\n\n================\n\n")
+cat(tempo.cat)
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_check(data = no.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = rownames.kept, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = vector.cat, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = noquote, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_check(data = sep, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_check()
+}
+# end argument checking with fun_check()
+# source("C:/Users/Gael/Documents/Git_versions_to_use/debugging_tools_for_r_dev-v1.2/r_debugging_tools-v1.2.R") ; eval(parse(text = str_basic_arg_check_dev)) ; eval(parse(text = str_arg_check_with_fun_check_dev)) # activate this line and use the function (with no arguments left as NULL) to check arguments status and if they have been checked using fun_check()
+# the 4 next lines are inactivated but kept because at a time, I might have a problem with data (solved with data = NULL). These 4 lines are just to know how to detect a missing argument. Important here because if data is not provided, print the code of the data function
+# arg.user.list <- as.list(match.call(expand.dots=FALSE))[-1] # recover all the arguments provided by the function user (excluding the argument with defaults values not provided by the user. Thus, it is really the list indicated by the user)
+# default.arg.list <- formals(fun = sys.function(sys.parent())) # list of all the arguments of the function with their default values (not the values of the user !). It seems that ls() as first line of the function provide the names of the arguments (empty, called, etc., or not)
+# arg.without.default.value <- sapply(default.arg.list, is.symbol) & sapply(sapply(default.arg.list, as.character), identical, "") # logical to detect argument without default values (these are typeof "symbol" and class "name" and empty character
+# if( ! all(names(default.arg.list)[arg.without.default.value] %in% names(arg.user.list))){ # test that the arguments with no null values are provided by the user
+# tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": VALUE REQUIRED FOR THESE ARGUMENTS WITH NO DEFAULTS VALUES: ", paste(names(default.arg.list)[arg.without.default.value][ ! names(default.arg.list)[arg.without.default.value] %in% names(arg.user.list)], collapse = " "), "\n\n================\n\n")
+#stop(tempo.cat)
+# }
+# end argument checking
+# main code
+if(all(class(data) %in% c("matrix", "data.frame", "table"))){
+if(rownames.kept == FALSE & all(class(data) == "data.frame") & nrow(data) != 0 & nrow(data) <= 4){ # for data frames with nrows <= 4
+rownames.output.tables <- ""
+length.rows <- nrow(data)
+for(i in 1:length.rows){ # replace the rownames of the first 4 rows by increasing number of spaces (because identical row names not allowed in data frames). This method cannot be extended to more rows as the printed data frame is shifted on the right because of "big empty rownames"
+rownames.output.tables <- c(rownames.output.tables, paste0(rownames.output.tables[i]," ", collapse=""))
+}
+row.names(data) <- rownames.output.tables[1:length.rows]
+}else if(rownames.kept == FALSE & all(class(data) %in% c("matrix", "table"))){
+rownames(data) <- rep("", nrow(data)) # identical row names allowed in matrices and tables
+}
+if(noquote == TRUE){
+capture.output(noquote(data), file=paste0(path, "/", output), append = no.overwrite)
+}else{
+capture.output(data, file=paste0(path, "/", output), append = no.overwrite)
+}
+}else if(is.vector(data) & all(class(data) != "list") & (length(data) == 1 | vector.cat == TRUE)){
+if(noquote == TRUE){
+cat(noquote(data), file= paste0(path, "/", output), append = no.overwrite)
+}else{
+cat(data, file= paste0(path, "/", output), append = no.overwrite)
+}
+}else{ # other (array, list, factor or vector with vector.cat = FALSE)
+if(noquote == TRUE){
+capture.output(noquote(data), file=paste0(path, "/", output), append = no.overwrite)
+}else{
+capture.output(data, file=paste0(path, "/", output), append = no.overwrite)
+}
+}
+sep.final <- paste0(rep("\n", sep), collapse = "")
+write(sep.final, file= paste0(path, "/", output), append = TRUE) # add a sep
 }
 
 
diff --git a/cute_little_R_functions.docx b/cute_little_R_functions.docx
index 47b55d52336562766d24363174e79d72332af420..eea4a0e7cad0e96f8fbaf8d34d84a5da80998a96 100644
GIT binary patch
delta 631538
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%0D=`qGoqV-Trjd^JU;;83ZyD378R|tOI)50W!E*tu
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
D8C`eC

delta 629383
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

-- 
GitLab