From a8f84838e9f0ebb59a461d900d2fdc4ef58bf58b Mon Sep 17 00:00:00 2001
From: gmillot <gael.millot@pasteur.fr>
Date: Mon, 26 Aug 2019 13:28:22 +0200
Subject: [PATCH] tempo v6

---
 README.md                    |  119 +-
 cute_little_R_functions.R    | 8566 +++++++++++++++++++++++-----------
 cute_little_R_functions.docx |  Bin 238619 -> 548896 bytes
 examples_alone.txt           |  230 +-
 4 files changed, 6183 insertions(+), 2732 deletions(-)

diff --git a/README.md b/README.md
index d1db53a..e3efd0f 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,72 @@
 #### DESCRIPTION
 
-Cute Little R Functions contains 21 functions for R/RStudio that facilitate basic procedures in 1) object analysis, 2) object modification, 3) graphic handling and 4) log file management.
+Cute Little R Functions contains 32 functions for R/RStudio that facilitate basic procedures in 1) object analysis, 2) object modification, 3) graphic handling and 4) log file management.
 
 The function names are:
 
-fun_param_check()	Check the class, type, mode and length, prop, neg values, na.contains, etc., of an object
-fun_object_info()	provide a full description of the object
-fun_1D_comp()	compare two 1D datasets (vector of factor or 1D table) of the same class or not
-fun_2D_comp()	compare two 2D datasets of the same class or not
-fun_2D_head()	display the left/right head of 2D objects
-fun_2D_tail()	display the left/right tail of 2D objects
-fun_list_comp()	compare two lists
-fun_dataframe_remodeling()	remodel data frames
-fun_refactorization()	refactorize a factor or the factor columns of a data frame, such as only the class present are in the levels (no empty levels). The class order in levels is kept
-fun_rounding()	round a vector of values, if decimal, with the desired number of decimal digits after the decimal leading zeros
-fun_90clock_matrix_rot()	90° clockwise matrix rotation
-fun_hexa_hsv_color_matrix()	convert a matrix made of numbers into a hexadecimal matrix for rgb colorization
-fun_by_case_matrix_op()	assemble several matrices of same dimensions by performing by case operation
-fun_mat_inv()	return the inverse of a square matrix when solve() cannot
-fun_window_width_resizing()	rescale the width of a window to open depending on the number of classes to plot
-fun_open_window()	open a pdf or screen (GUI) graphic window
-fun_graph_param_prior_plot()	very convenient to erase the axes for post plot axis redrawing using fun_feature_post_plot()
-fun_feature_post_plot()	redesign axis and provide convenients coordinates for adding elements on the drawn graph
-fun_close_specif_window()	close only specific graphic windows (devices)
-fun_var_trim_display()	trim and display values from a numeric vector or matrix
-fun_export_data()	log file function: print a character string or a data object into a same output file
+## Object analysis
+
+fun_param_check() #### Checking class, type, length, etc. of objects
+fun_object_info() #### Recovering object information
+fun_1D_comp() #### comparison of two 1D datasets (vectors, factors, 1D tables)
+fun_2D_comp() #### comparison of two 2D datasets (row & col names, dimensions, etc.)
+fun_2D_head() #### head of the left or right of big 2D objects
+fun_2D_tail() #### tail of the left or right of big 2D objects
+fun_list_comp() #### comparison of two lists
+
+
+## Object modification
+
+fun_dataframe_remodeling() #### remodeling a data frame to have column name as a qualitative column and vice-versa
+fun_refactorization() #### remove classes that are not anymore present in factors or factor columns in data frames
+fun_round() #### Rounding number if decimal present
+fun_90clock_matrix_rot() #### 90° clockwise matrix rotation
+fun_num2color_mat() #### Conversion of a numeric matrix into hexadecimal color matrix
+fun_by_case_matrix_op() #### assembling of several matrices with operation
+fun_mat_inv() #### return the inverse of a square matrix
+fun_mat_fill() #### fill the empty half part of a symmetric square matrix
+fun_consec_pos_perm() #### progressively breaks a vector order
+
+
+## Graphics management
+
+fun_window_width_resizing() #### window width depending on classes to plot
+fun_open_window() #### Open a GUI or pdf graphic window
+fun_prior_plot() #### Graph param before plotting
+fun_post_plot() #### Graph param after plotting
+fun_close_specif_window() #### Closing specific graphic windows
+
+
+## Standard graphics
+
+fun_empty_graph() #### text to display for empty graphs
+
+
+## gg graphics
+
+fun_gg_palette() #### ggplot2 default color palette
+fun_gg_scatter() #### ggplot2 scatterplot + lines (up to 6 overlays totally)
+fun_gg_bar_mean() #### ggplot2 mean barplot + overlaid dots if required
+fun_gg_heatmap() #### ggplot2 heatmap + overlaid mask if required
+fun_gg_empty_graph() #### text to display for empty graphs
+
+
+## Graphic extraction
+
+fun_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs
+fun_segmentation() #### Segment a dot cloud on a scatterplot and define the dots from another cloud outside the segmentation
+
+
+## Import
+
+fun_pack_import() #### Check if R packages are present and import into the working environment
+fun_python_pack_import() #### Check if python packages are present
+
+
+## Exporting results (text & tables)
+
+fun_export_data() #### Print string or data object into output file
+
 
 
 #### LICENCE
@@ -56,7 +98,7 @@ Description of the functions is at the beginning of the function body. To obtain
 
 cute_little_R_functions.R	file that has to be sourced
 cute_little_R_functions.docx	just for easier code reading
-examples_alone.txt	compile all the examples of each of the 17 functions into a single file
+examples_alone.txt	compile all the examples of the functions into a single file
 
 
 #### WEB LOCATION
@@ -66,6 +108,35 @@ Check for updated versions (most recent tags) at https://gitlab.pasteur.fr/gmill
 
 #### WHAT'S NEW IN
 
+
+## v6.0.0
+
+1) name of functions changed:
+fun_rounding()	fun_round()
+fun_hexa_hsv_color_matrix()	fun_num2color_mat()
+fun_graph_param_prior_plot()	fun_prior_plot()
+fun_feature_post_plot()	fun_post_plot()
+
+2) new functions added:
+fun_mat_fill()
+fun_consec_pos_perm()
+fun_empty_graph()
+fun_gg_palette()
+fun_gg_scatter()
+fun_gg_bar_mean()
+fun_gg_heatmap()
+fun_gg_empty_graph()
+fun_segmentation()
+fun_pack_import()
+fun_python_pack_import()
+
+3) text error modified in fun_2D_head() and fun_2D_tail()
+
+4) in fun_param_check(): (1) has now the class = "vector", (2) argument fun.name added
+
+5) writiing and debugging message errors improved in all the functions
+
+
 ## v5.1.0
 
 1) bugs corrected in fun_2D_head() and fun_2D_tail() functions
@@ -168,6 +239,6 @@ Check for updated versions (most recent tags) at https://gitlab.pasteur.fr/gmill
 
 ## v1.3
 
-1) fun_1D_comp() function improved: provide the common elements, common names and common levels if exist.
+1) fun_1D_comp() function improved: provide the common elements, common names and common levels if exist
 
 
diff --git a/cute_little_R_functions.R b/cute_little_R_functions.R
index 3087f97..27ff1a3 100644
--- a/cute_little_R_functions.R
+++ b/cute_little_R_functions.R
@@ -1,6 +1,6 @@
 ################################################################
 ##                                                            ##
-##     CUTE LITTLE R FUNCTIONS v5.1.0                         ##
+##     CUTE LITTLE R FUNCTIONS v6.0.0                         ##
 ##                                                            ##
 ##     Gael A. Millot                                         ##
 ##                                                            ##
@@ -10,35 +10,57 @@
 
 
 
+# BEWARE: do not forget to save the modifications in the .R file (through RSTUDIO for indentation)
+
 
 ################################ OUTLINE ################################
 
 
-################ Object analysis    1
-######## fun_param_check() #### Checking class, type, length, etc. of objects   1
-######## fun_object_info() #### Recovering object information   7
-######## fun_1D_comp() #### comparison of two 1D datasets (vectors, factors, 1D tables) 8
-######## fun_2D_comp() #### comparison of two 2D datasets (row & col names, dimensions, etc.)   12
-######## fun_2D_head() #### head of the left or right of big 2D objects 19
-######## fun_2D_tail() #### tail of the left or right of big 2D objects 20
-######## fun_list_comp() #### comparison of two lists   21
-################ Object modification    23
-######## fun_dataframe_remodeling() #### remodeling a data frame to have column name as a qualitative column and vice-versa 23
-######## fun_refactorization() #### remove classes that are not anymore present in factors or factor columns in data frames 26
-######## fun_rounding() #### Rounding number if decimal present 27
-######## fun_90clock_matrix_rot() #### 90° clockwise matrix rotation    29
-######## fun_hexa_hsv_color_matrix() #### Conversion of a numeric matrix into hexadecimal color matrix  30
-######## fun_by_case_matrix_op() #### assembling of several matrices with operation 32
-######## fun_mat_inv() #### return the inverse of a square matrix   35
-################ Graphics   36
-######## fun_window_width_resizing() #### window width depending on classes to plot 36
-######## fun_open_window() #### Open a GUI or pdf graphic window    37
-######## fun_graph_param_prior_plot() #### Graph param before plotting  41
-######## fun_feature_post_plot() #### Graph param after plotting    45
-######## fun_close_specif_window() #### Closing specific graphic windows    55
-######## fun_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs 57
-################ Exporting results (text & tables)  65
-######## fun_export_data() #### Print string or data object into output file    65
+################ Object analysis	2
+######## fun_param_check() #### Checking class, type, length, etc. of objects	2
+######## fun_object_info() #### Recovering object information	8
+######## fun_1D_comp() #### comparison of two 1D datasets (vectors, factors, 1D tables)	9
+######## fun_2D_comp() #### comparison of two 2D datasets (row & col names, dimensions, etc.)	13
+######## fun_2D_head() #### head of the left or right of big 2D objects	19
+######## fun_2D_tail() #### tail of the left or right of big 2D objects	21
+######## fun_list_comp() #### comparison of two lists	22
+################ Object modification	24
+######## fun_dataframe_remodeling() #### remodeling a data frame to have column name as a qualitative column and vice-versa	24
+######## fun_refactorization() #### remove classes that are not anymore present in factors or factor columns in data frames	27
+######## fun_round() #### Rounding number if decimal present	29
+######## fun_90clock_matrix_rot() #### 90° clockwise matrix rotation	31
+######## fun_num2color_mat() #### Conversion of a numeric matrix into hexadecimal color matrix	32
+######## fun_by_case_matrix_op() #### assembling of several matrices with operation	35
+######## fun_mat_inv() #### return the inverse of a square matrix	37
+######## fun_mat_fill() #### fill the empty half part of a symmetric square matrix	38
+######## fun_consec_pos_perm() #### progressively breaks a vector order	41
+################ Graphics management	46
+######## fun_window_width_resizing() #### window width depending on classes to plot	46
+######## fun_open_window() #### Open a GUI or pdf graphic window	47
+######## fun_prior_plot() #### Graph param before plotting	51
+######## fun_post_plot() #### Graph param after plotting	55
+######## fun_close_specif_window() #### Closing specific graphic windows	66
+################ Standard graphics	67
+######## fun_empty_graph() #### text to display for empty graphs	67
+################ gg graphics	69
+######## fun_gg_palette() #### ggplot2 default color palette	69
+######## fun_gg_scatter() #### ggplot2 scatterplot + lines (up to 6 overlays totally)	70
+######## fun_gg_bar_mean() #### ggplot2 mean barplot + overlaid dots if required	89
+######## fun_gg_boxplot() #### ggplot2 boxplot + background dots if required	110
+######## fun_gg_bar_prop() #### ggplot2 proportion barplot	130
+######## fun_gg_strip() #### ggplot2 stripchart + mean/median	130
+######## fun_gg_violin() #### ggplot2 violins	130
+######## fun_gg_line() #### ggplot2 lines + background dots and error bars	130
+######## fun_gg_heatmap() #### ggplot2 heatmap + overlaid mask if required	130
+######## fun_gg_empty_graph() #### text to display for empty graphs	135
+################ Graphic extraction	136
+######## fun_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs	137
+######## fun_segmentation() #### Segment a dot cloud on a scatterplot and define the dots from another cloud outside the segmentation	145
+################ Import	160
+######## fun_pack_import() #### Check if R packages are present and import into the working environment	160
+######## fun_python_pack_import() #### Check if python packages are present	162
+################ Exporting results (text & tables)	163
+######## fun_export_data() #### Print string or data object into output file	163
 
 
 ################################ FUNCTIONS ################################
@@ -51,235 +73,248 @@
 
 
 # Check OK: clear to go Apollo
-fun_param_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){
-    # 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 even if it is an integer?
-    # 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
-    # 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
-    # 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?
-    # 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_param_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_param_check(data = test, print = TRUE, class = "numeric", typeof = NULL, double.as.integer.allowed = FALSE)
-    # DEBUGGING
-    # data = 1:3 ; data.name = NULL ; print = TRUE; options = NULL ; all.options.in.data = FALSE ; class = "numeric" ; typeof = NULL ; mode = NULL ; prop = NULL ; double.as.integer.allowed = TRUE ; length = NULL # for function debugging
-    # 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))
-    if( ! is.null(data.name)){
-        if( ! (length(data.name) == 1 & class(data.name) == "character")){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_param_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_param_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_param_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_param_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_param_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("logical", "integer", "numeric", "complex", "character", "matrix", "array", "data.frame", "list", "factor", "table", "expression", "name", "symbol", "function") & 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_param_check(): class ARGUMENT MUST BE ONE OF THESE VALUE:\n\"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("numeric", "integer", "table"))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_param_check(): class ARGUMENT CANNOT BE OTHER THAN \"numeric\", \"integer\", \"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_param_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_param_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_param_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_param_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_param_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_param_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("numeric", "matrix", "array", "data.frame", "table"))){
-                    tempo.cat <- paste0("\n\n================\n\nERROR IN fun_param_check(): class ARGUMENT CANNOT BE OTHER THAN \"numeric\", \"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_param_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_param_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_param_check(): THE double.as.integer.allowed ARGUMENT MUST BE TRUE OR FALSE ONLY\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_param_check(): all.options.in.data ARGUMENT MUST BE A SINGLE LOGICAL VALUE (TRUE OR FALSE ONLY)\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_param_check(): THE na.contain ARGUMENT MUST BE TRUE OR FALSE ONLY\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_param_check(): THE print ARGUMENT MUST BE TRUE OR FALSE ONLY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    if(is.null(data.name)){
-        data.name <- deparse(substitute(data))
-    }
-    problem <- FALSE
-    text <- paste0("NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER")
-    if( ! is.null(options)){
-        text <- ""
-        if( ! all(data %in% options)){
-            problem <- TRUE
-            text <- paste0("PROBLEM: 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("PROBLEM: 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, "\nPROBLEM: 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("PROBLEM: THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
-                }else{
-                    text <- paste0(text, "\nPROBLEM: THE LENGTH OF ", data.name, " MUST BE ", length, " AND NOT ", length(data))
-                }
-            }
-        }
-        if(text == ""){
-            text <- paste0("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 <- '
+fun_param_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_param_check() is used to check its argument. If non NULL, name will be added into the error message returned by fun_param_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_param_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_param_check(data = test, print = TRUE, class = "numeric", typeof = NULL, double.as.integer.allowed = FALSE)
+# test <- 1:3 ; fun_param_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+# test <- matrix(1:3) ; fun_param_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+# DEBUGGING
+# data = 1:3 ; data.name = NULL ; print = TRUE; options = NULL ; all.options.in.data = FALSE ; class = "numeric" ; typeof = NULL ; mode = NULL ; prop = NULL ; double.as.integer.allowed = TRUE ; length = NULL # for function debugging
+# 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_param_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_param_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_param_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_param_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_param_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") & 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_param_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_param_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_param_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_param_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_param_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_param_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_param_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_param_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_param_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_param_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_param_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_param_check(): THE double.as.integer.allowed ARGUMENT MUST BE TRUE OR FALSE ONLY\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_param_check(): all.options.in.data ARGUMENT MUST BE A SINGLE LOGICAL VALUE (TRUE OR FALSE ONLY)\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_param_check(): THE na.contain ARGUMENT MUST BE TRUE OR FALSE ONLY\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_param_check(): THE print ARGUMENT MUST BE TRUE OR FALSE ONLY\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_param_check(): THE fun.name ARGUMENT MUST BE A CHARACTER VECTOR OF LENGTH 1\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("NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-text <- paste0("PROBLEM: THE ", data.name, " PARAMETER MUST BE ") ;
+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 ") ;
 }else{
 text <- paste0(text, " AND "); 
 }
 text <- paste0(text, toupper(arg.names[i2]), " ", get(arg.names[i2]))
 '
-            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(eval(parse(text = paste0(arg.names[i2], "(data)"))) != get(arg.names[i2])){
-                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("NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-                text <- paste0("PROBLEM: ")
-            }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(na.contain == FALSE & any(is.na(data)) == TRUE){
-    problem <- TRUE
-    if(identical(text, paste0("NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-        text <- paste0("PROBLEM: ")
-    }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("NO PROBLEM DETECTED FOR THE ", data.name, " PARAMETER"))){
-            text <- paste0("PROBLEM: ")
-        }else{
-            text <- paste0(text, " AND ")
-        }
-        text <- paste0(text, "THE ", data.name, " PARAMETER MUST 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)
@@ -291,85 +326,86 @@ return(output)
 
 # Check OK: clear to go Apollo
 fun_object_info <- function(data){
-    # AIM:
-    # provide a full description of the object
-    # REQUIRED FUNCTIONS
-    # none
-    # ARGUMENTS
-    # data: object to test
-    # RETURN
-    # a list containing the info
-    # use names(fun_object_info()) and remove what can be to big for easy analysis
-    # EXAMPLES
-    # fun_object_info(data = 1:3)
-    # fun_object_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
-    # fun_object_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
-    # 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 and if they have been checked using fun_param_check()
-    # end argument checking
-    data.name <- deparse(substitute(data))
-    output <- list("FILE_NAME" = data.name)
-    tempo <- list("CLASS" = class(data))
-    output <- c(output, tempo)
-    tempo <- list("FILE_HEAD" = head(data))
-    output <- c(output, tempo)
-    if( ! is.null(data)){
-        tempo <- list("FILE_TAIL" = tail(data))
-        output <- c(output, tempo)
-        if( ! is.null(dim(data))){
-            tempo <- list("FILE_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 the object
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# none
+# ARGUMENTS
+# data: object to test
+# RETURN
+# a list containing the info
+# use names(fun_object_info()) and remove what can be to big for easy analysis
+# EXAMPLES
+# fun_object_info(data = 1:3)
+# fun_object_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
+# fun_object_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
+# 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("FILE_NAME" = data.name)
+tempo <- list("CLASS" = class(data))
+output <- c(output, tempo)
+tempo <- list("FILE_HEAD" = head(data))
+output <- c(output, tempo)
+if( ! is.null(data)){
+tempo <- list("FILE_TAIL" = tail(data))
+output <- c(output, tempo)
+if( ! is.null(dim(data))){
+tempo <- list("FILE_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)
 }
 
 
@@ -378,210 +414,214 @@ fun_object_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
-    # 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
-    # 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 and if they have been checked using fun_param_check()
-    if( ! any(class(data1) %in% c("logical", "integer", "numeric", "character", "factor", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_1D_comp(): 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 fun_1D_comp(): 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 fun_1D_comp(): 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 fun_1D_comp(): THE data2 ARGUMENT MUST BE A 1D TABLE\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end argument checking
-    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)
 }
 
 
@@ -590,301 +630,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
-    # 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
-    # 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 and if they have been checked using fun_param_check()
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_2D_comp(): 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 fun_2D_comp(): THE data2 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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 fun_2D_comp(): 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 fun_2D_comp(): 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 fun_2D_comp(): 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)
 }
 
 
@@ -893,51 +937,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
-    # fun_param_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
-    # argument checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_dataframe_remodeling(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function 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_param_check(data = n, typeof = "integer", double.as.integer.allowed = TRUE, length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = side, options = c("l", "r"), length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_2D_comp(): THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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_param_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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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])
 }
 
 
@@ -946,51 +999,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
-    # fun_param_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
-    # argument checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_dataframe_remodeling(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function 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_param_check(data = n, typeof = "integer", double.as.integer.allowed = TRUE, length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = side, options = c("l", "r"), length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if( ! any(class(data1) %in% c("matrix", "data.frame", "table"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_2D_comp(): THE data1 ARGUMENT MUST BE A MATRIX, DATA FRAME OR TABLE\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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_param_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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_check(data = n, class = "vector", typeof = "integer", double.as.integer.allowed = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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])
 }
 
 
@@ -999,124 +1061,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
-    # 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
-    # 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 and if they have been checked using fun_param_check()
-    if( ! any(class(data1) %in% "list")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_list_comp(): 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 fun_list_comp(): THE data2 ARGUMENT MUST BE A LIST\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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)
 }
 
 
@@ -1128,107 +1194,116 @@ fun_list_comp <- function(data1, data2){
 
 # Check OK: clear to go Apollo
 fun_dataframe_remodeling <- 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
-    # fun_param_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_dataframe_remodeling(obs)
-    # obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; obs ; fun_dataframe_remodeling(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_dataframe_remodeling(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_dataframe_remodeling(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function 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_param_check(data = quanti.col.name, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = quali.col.name, class = "character", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if( ! any(class(data) %in% "data.frame")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_dataframe_remodeling(): THE data ARGUMENT MUST BE A DATA FRAME\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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 fun_dataframe_remodeling(): 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 fun_dataframe_remodeling(): 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 fun_dataframe_remodeling(): 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 fun_dataframe_remodeling(): 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_param_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_dataframe_remodeling(obs)
+# obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; obs ; fun_dataframe_remodeling(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_dataframe_remodeling(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_check(data = quanti.col.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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)
 }
 
 
@@ -1237,156 +1312,180 @@ fun_dataframe_remodeling <- function(data, quanti.col.name = "quanti", quali.col
 
 # Check OK: clear to go Apollo
 fun_refactorization <- function(data, also.ordered = TRUE){
-    # AIM:
-    # refactorize a factor or the factor columns of a data frame, such as only the class present are in the levels (no empty levels). The class order in levels is kept
-    # useful to remove the empty classes after row removing for instance
-    # REQUIRED FUNCTIONS
-    # fun_param_check()
-    # ARGUMENTS
-    # data: factor (ordered or not) or data frame
-    # also.ordered: refactorize also ordered factors? This to deal with ordered factors that have class "ordered" "factor"
-    # RETURN
-    # a list containing:
-    # $data: the modified object
-    # $removed: the removed classes for a factor and a list of the removed classes for each factor class of the data frame
-    # EXAMPLES
-    # obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, FALSE)
-    # obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, TRUE)
-    # obs <- factor(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
-    # obs <- ordered(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
-    # obs <- factor(LETTERS[1:6], levels = rev(LETTERS[1:6]))[-c(1:2)] ; obs ; fun_refactorization(obs, FALSE)
-    # DEBUGGING
-    # data <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A") ; data <- data[-c(1:2),] ; also.ordered <- TRUE # for function debugging
-    # data <- factor(LETTERS[1:6])[-c(1:2)] ; also.ordered <- TRUE # for function debugging
-    # data <- ordered(LETTERS[1:6])[-c(1:2)] ; also.ordered <- TRUE # for function debugging
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_refactorization(): REQUIRED fun_param_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_param_check(data = also.ordered, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if(also.ordered == FALSE){
-        if( ! (all(class(data) == "data.frame") | all(class(data) == "factor"))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_refactorization(): data ARGUMENT MUST BE A FACTOR (NON ORDERED BECAUSE THE also.ordered ARGUMENT IS SET TO FALSE) OR A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if(also.ordered == TRUE){
-        if( ! (all(class(data) == "data.frame") | all(class(data) == "factor") | all(class(data) %in% c("ordered", "factor")))){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_refactorization(): data ARGUMENT MUST BE A FACTOR OR A DATA FRAME\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    # end argument checking
-    text <- NULL
-    if(all(class(data) == "factor")){
-        tempo.keep.log <- levels(data) %in% unique(data)
-        text <- levels(data)[ ! tempo.keep.log]
-        data <- factor(data, levels = levels(data)[tempo.keep.log])
-    }else if(all(class(data) %in% c("ordered", "factor"))){
-        tempo.keep.log <- levels(data) %in% unique(data)
-        text <- levels(data)[ ! tempo.keep.log]
-        data <- ordered(data, levels = levels(data)[tempo.keep.log])
-    }else if(all(class(data) == "data.frame")){
-        text <- vector("list", length(data))
-        names(text) <- names(data)
-        tempo.factor.col <- sapply(sapply(lapply(data, class), FUN = "%in%", "factor"), FUN = "all") # get the factor column (logical)
-        for(i in 1:length(tempo.factor.col)){
-            if(tempo.factor.col[i] == TRUE){
-                tempo.keep.log <- levels(data[[i]]) %in% unique(data[[i]])
-                text[[i]] <- levels(data[[i]])[ ! tempo.keep.log]
-                data[[i]] <- factor(data[[i]], levels = levels(data[[i]])[tempo.keep.log])
-            }
-        }
-        tempo.ordered.col <- sapply(sapply(lapply(data, class), FUN = "%in%", "ordered"), FUN = "any") # get the ordered factor column (logical) if they exist
-        if(also.ordered == TRUE){
-            for(i in 1:length(tempo.ordered.col)){
-                if(tempo.ordered.col[i] == TRUE){
-                    tempo.keep.log <- levels(data[[i]]) %in% unique(data[[i]])
-                    text[[i]] <- levels(data[[i]])[ ! tempo.keep.log]
-                    data[[i]] <- ordered(data[[i]], levels = levels(data[[i]])[tempo.keep.log])
-                }
-            }
-        }
-        text <- text[(tempo.factor.col | tempo.ordered.col) & ! (sapply(text, FUN = length) == 0)] # remove the compartments of text that are not modified factors columns of data frame
-    }
-    output <- list(data = data, removed = text)
-    return(output)
-}
-
-
-######## fun_rounding() #### Rounding number if decimal present
+# AIM
+# refactorize a factor or the factor columns of a data frame, such as only the class present are in the levels (no empty levels). The class order in levels is kept. Do not work on character vector or column of data frame
+# useful to remove the empty classes after row removing for instance
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# ARGUMENTS
+# data: factor (ordered or not) or data frame
+# also.ordered: refactorize also ordered factors? This to deal with ordered factors that have class "ordered" "factor"
+# RETURN
+# a list containing:
+# $data: the modified object
+# $removed: the removed classes for a factor and a list of the removed classes for each factor class of the data frame
+# EXAMPLES
+# obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, FALSE)
+# obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, TRUE)
+# obs <- factor(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
+# obs <- ordered(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
+# obs <- factor(LETTERS[1:6], levels = rev(LETTERS[1:6]))[-c(1:2)] ; obs ; fun_refactorization(obs, FALSE)
+# DEBUGGING
+# data <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A") ; data <- data[-c(1:2),] ; also.ordered <- TRUE # for function debugging
+# data <- factor(LETTERS[1:6])[-c(1:2)] ; also.ordered <- TRUE # for function debugging
+# data <- ordered(LETTERS[1:6])[-c(1:2)] ; also.ordered <- 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check(data = also.ordered, 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_param_check()
+}
+# end argument checking with fun_param_check()
+# argument checking without fun_param_check()
+if(also.ordered == FALSE){
+if( ! (all(class(data) == "data.frame") | all(class(data) == "factor"))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A FACTOR (NON ORDERED BECAUSE THE also.ordered ARGUMENT IS SET TO FALSE) OR A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+if(also.ordered == TRUE){
+if( ! (all(class(data) == "data.frame") | all(class(data) == "factor") | all(class(data) %in% c("ordered", "factor")))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data ARGUMENT MUST BE A FACTOR OR A DATA FRAME\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end argument checking without fun_param_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_param_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_param_check()
+# end argument checking
+# main code
+text <- NULL
+if(all(class(data) == "factor")){
+tempo.keep.log <- levels(data) %in% unique(data)
+text <- levels(data)[ ! tempo.keep.log]
+data <- factor(data, levels = levels(data)[tempo.keep.log])
+}else if(all(class(data) %in% c("ordered", "factor"))){
+tempo.keep.log <- levels(data) %in% unique(data)
+text <- levels(data)[ ! tempo.keep.log]
+data <- ordered(data, levels = levels(data)[tempo.keep.log])
+}else if(all(class(data) == "data.frame")){
+text <- vector("list", length(data))
+names(text) <- names(data)
+tempo.factor.col <- sapply(sapply(lapply(data, class), FUN = "%in%", "factor"), FUN = "all") # get the factor column (logical)
+for(i in 1:length(tempo.factor.col)){
+if(tempo.factor.col[i] == TRUE){
+tempo.keep.log <- levels(data[[i]]) %in% unique(data[[i]])
+text[[i]] <- levels(data[[i]])[ ! tempo.keep.log]
+data[[i]] <- factor(data[[i]], levels = levels(data[[i]])[tempo.keep.log])
+}
+}
+tempo.ordered.col <- sapply(sapply(lapply(data, class), FUN = "%in%", "ordered"), FUN = "any") # get the ordered factor column (logical) if they exist
+if(also.ordered == TRUE){
+for(i in 1:length(tempo.ordered.col)){
+if(tempo.ordered.col[i] == TRUE){
+tempo.keep.log <- levels(data[[i]]) %in% unique(data[[i]])
+text[[i]] <- levels(data[[i]])[ ! tempo.keep.log]
+data[[i]] <- ordered(data[[i]], levels = levels(data[[i]])[tempo.keep.log])
+}
+}
+}
+text <- text[(tempo.factor.col | tempo.ordered.col) & ! (sapply(text, FUN = length) == 0)] # remove the compartments of text that are not modified factors columns of data frame
+}
+output <- list(data = data, removed = text)
+return(output)
+}
+
+
+######## fun_round() #### Rounding number if decimal present
 
 
 # Check OK: clear to go Apollo
-fun_rounding <- 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
-    # BEWARE
-    # 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
-    # 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
-    # fun_param_check()
-    # RETURN
-    # the modified vector
-    # EXAMPLES
-    # cat(fun_rounding(data = c(10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE))
-    # cat(fun_rounding(data = c("10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE))
-    # 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
-    # argument checking
-    if( ! (all(typeof(data) == "character") | all(typeof(data) == "double") | all(typeof(data) == "integer"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_rounding(): data ARGUMENT MUST BE A VECTOR OF NUMBERS (IN NUMERIC OR CHARACTER MODE)\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    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_param_check(data = dec.nb, typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = after.lead.zero, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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)
+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
+# BEWARE
+# 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
+# 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_param_check()
+# RETURN
+# the modified vector
+# EXAMPLES
+# cat(fun_round(data = c(10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE), "\n\n")
+# cat(fun_round(data = c("10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE), "\n\n")
+# cat(fun_round(data = c("10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = TRUE), "\n\n")
+# 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_check(data = data, class = "vector", fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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)
 }
 
 
@@ -1395,327 +1494,688 @@ fun_rounding <- function(data, dec.nb = 2, after.lead.zero = TRUE){
 
 # Check OK: clear to go Apollo
 fun_90clock_matrix_rot <- function(data){
-    # AIM:
-    # 90° clockwise matrix rotation
-    # applied twice, the function provide the mirror matrix, according to vertical and horizontal symmetry
-    # REQUIRED FUNCTIONS
-    # fun_param_check()
-    # ARGUMENTS
-    # data: matrix (matrix class)
-    # RETURN
-    # the modified matrix
-    # EXAMPLES
-    # obs <- matrix(1:10, ncol = 1) ; obs ; fun_90clock_matrix_rot(obs)
-    # obs <- matrix(LETTERS[1:10], ncol = 5) ; obs ; fun_90clock_matrix_rot(obs)
-    # DEBUGGING
-    # data = matrix(1:10, ncol = 1)
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_90clock_matrix_rot(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # 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 and if they have been checked using fun_param_check()
-    if( ! any(class(data) %in% "matrix")){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_90clock_matrix_rot(): THE data ARGUMENT MUST BE A MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    for (i in 1:ncol(data)){data[,i] <- rev(data[,i])}
-    data <- t(data)
-    return(data)
-}
-
-
-######## fun_hexa_hsv_color_matrix() #### Conversion of a numeric matrix into hexadecimal color matrix
-
-
-# Check OK: clear to go Apollo
-fun_hexa_hsv_color_matrix <- 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
-    # fun_param_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_hexa_hsv_color_matrix(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_hexa_hsv_color_matrix(): REQUIRED fun_param_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_param_check(data = mat1, mode = "numeric", class = "matrix", na.contain = TRUE, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = mat.hsv.h, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = notch, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = s, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = v, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if(mat.hsv.h == TRUE & fun_param_check(data = mat1, mode = "numeric", prop = TRUE, print = FALSE)$problem == TRUE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_hexa_hsv_color_matrix(): 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_param_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 fun_hexa_hsv_color_matrix(): 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
-    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 fun_hexa_hsv_color_matrix(): 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 fun_hexa_hsv_color_matrix(): 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 fun_hexa_hsv_color_matrix(): 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 fun_hexa_hsv_color_matrix(): 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 fun_hexa_hsv_color_matrix(): 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
+# 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_param_check()
+# ARGUMENTS
+# data: matrix (matrix class)
+# RETURN
+# the modified matrix
+# EXAMPLES
+# obs <- matrix(1:10, ncol = 1) ; obs ; fun_90clock_matrix_rot(obs)
+# obs <- matrix(LETTERS[1:10], ncol = 5) ; obs ; fun_90clock_matrix_rot(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_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_param_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_param_check()
+# end argument checking
+# main code
+for (i in 1:ncol(data)){data[,i] <- rev(data[,i])}
+data <- t(data)
+return(data)
 }
 
 
-######## fun_by_case_matrix_op() #### assembling of several matrices with operation
+######## fun_num2color_mat() #### Conversion of a numeric matrix into hexadecimal color matrix
 
 
 # Check OK: clear to go Apollo
-fun_by_case_matrix_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
-    # fun_param_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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_by_case_matrix_op(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_by_case_matrix_op(): REQUIRED fun_2D_comp() 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_param_check(data = mat.list, class = "list") ; eval(ee)
-    tempo <- fun_param_check(data = kind.of.operation, options = c("+", "-", "*"), length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if(length(mat.list) < 2){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_by_case_matrix_op(): 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_param_check(data = mat.list[[i0]], class = "matrix", mode = "numeric", na.contain = TRUE)
-        if(tempo$problem == TRUE){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_by_case_matrix_op(): 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 fun_by_case_matrix_op(): 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
-    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)
+fun_num2color_mat <- 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_param_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_num2color_mat(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check(data = mat1, mode = "numeric", class = "matrix", na.contain = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = mat.hsv.h, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = notch, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = s, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_check()
+# argument checking without fun_param_check()
+if(mat.hsv.h == TRUE & fun_param_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_param_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_param_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_param_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_param_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_inv() #### return the inverse of a square matrix
+######## fun_by_case_matrix_op() #### assembling of several matrices with operation
+
+
+# Check OK: clear to go Apollo
+fun_by_case_matrix_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_param_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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_param_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_param_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_param_check(data = mat.list, class = "list", fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_check()
+# argument checking without fun_param_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_param_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_param_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_param_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_param_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)
+}
+
+
+######## fun_mat_inv() #### return the inverse of a square matrix
 
 
 # Check OK: clear to go Apollo
 fun_mat_inv <- function(mat){
-    # AIM:
-    # return the inverse of a square matrix when solve() cannot
-    # REQUIRED FUNCTIONS
-    # fun_param_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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_mat_inv(): REQUIRED fun_param_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_param_check(data = mat, class = "matrix", mode = "numeric") ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    if(ncol(mat) != nrow(mat)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_mat_inv(): 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 fun_mat_inv(): 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 fun_mat_inv(): mat ARGUMENT CANNOT BE A SQUARE MATRIX MADE OF A SINGLE CASE OF 0\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    if(any(grepl(x = try(solve(mat), silent = TRUE)[], pattern = "Error"))){
-        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))
-    }
-}
-
-
-################ Graphics
+# AIM
+# return the inverse of a square matrix when solve() cannot
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_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_param_check()
+}
+# end argument checking with fun_param_check()
+# argument checking without fun_param_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_param_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_param_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_param_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))
+}
+}
+
+
+######## fun_mat_fill() #### fill the empty half part of a symmetric square matrix
+
+
+# Check OK: clear to go Apollo
+fun_mat_fill <- function(mat, empty.cell.string = 0, warning.print = TRUE){
+# 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
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_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
+# warning.print: logical. Print warning message?
+# RETURN
+# if warning.print = FALSE, the filled matrix
+# if warning.print = TRUE, a list containing:
+# $mat: the filled matrix
+# $warnings: the warning messages
+# a plot verification using fun_gg_heatmap() is recommanded
+# 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, warning.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, warning.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, warning.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", warning.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, warning.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, warning.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 ; warning.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 ; warning.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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check(data = mat, class = "matrix", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = empty.cell.string, class = "vector", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = warning.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_param_check()
+}
+# end argument checking with fun_param_check()
+# argument checking without fun_param_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_param_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_param_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_param_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("THE EMPTY SECTOR IS ", toupper(sector[i0]))
+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)
+}
+}
+}
+if(length(empty.sector) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": ACCORDING TO empty.cell.string ARGUMENT (", empty.cell.string, "), mat ARGUMENT MATRIX HAS ZERO EMPTY HALF PART\n\n================\n\n")
+stop(tempo.cat)
+}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)
+}
+# end empty part detection
+# 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(warning.print == TRUE){
+return(list(mat = mat, warnings = warning))
+}else{
+return(mat)
+}
+}
+
+
+######## fun_consec_pos_perm() #### progressively breaks a vector order
+
+
+fun_consec_pos_perm <- function(data1, data2 = NULL, n = 20, seed = NULL, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2, 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.
+# 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(). BEWARE: if not NULL, fun_consec_pos_perm() will systematically return the same result when the other parameters keep the same settings
+# count.print: print a working progress message every count.print loop. If count.print > n, then no message will be printed
+# 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). If cor(data1, data2) is negative and cor.limit is positive, then -cor.limit is used and the process stops until the correlation between data1 and data2 increases up 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 automately use -cor.limit. Ignored if data2 is not specified
+# 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_param_check()
+# fun_pack_import()
+# RETURN
+# a list containing:
+# $data: the modified vector
+# $warnings: potential warning messages (in case of negative correlation when data2 is specified)
+# $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
+# EXAMPLES
+# fun_consec_pos_perm(data1 = LETTERS[1:5], data2 = NULL, n = 20, seed = 1, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2)
+# fun_consec_pos_perm(data1 = 101:110, data2 = 21:30, n = 20, seed = 1, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2)
+# DEBUGGING
+# data1 = LETTERS[1:5] ; data2 = NULL ; n = 10 ; seed = NULL ; count.print = 10 ; text.print = "" ; cor.method = "spearman" ; cor.limit = 0.2 ; 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 ; 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 ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+# end required function checking
+# argument checking
+# argument checking without fun_param_check()
+if( ! all(is.vector(data1))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data1 ARGUMENT MUST BE A VECTOR\n\n================\n\n")
+stop(tempo.cat)
+}
+if(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")
+stop(tempo.cat)
+}
+# end argument checking without fun_param_check()
+# argument checking with fun_param_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))
+if( ! is.null(data2)){
+tempo <- fun_param_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")
+stop(tempo.cat)
+}
+if( ! all(is.vector(data2))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": data2 ARGUMENT MUST BE A VECTOR\n\n================\n\n")
+stop(tempo.cat)
+}
+tempo <- fun_param_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")
+stop(tempo.cat)
+}
+}
+tempo <- fun_param_check(data = n, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+if( ! is.null(seed)){
+tempo <- fun_param_check(data = seed, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = count.print, class = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.print, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = cor.method, options = c("pearson", "kendall", "spearman"), length =1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = cor.limit, class = "vector", mode = "numeric", prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_check()
+# end argument checking
+# package checking
+fun_pack_import(req.package = "lubridate", path.lib = path.lib)
+# end package checking
+# main code
+if( ! is.null(seed)){
+# code that does not affect set.seed() in the global environment
+# as soon as set.seed() or a random function, like runif() or sample(), is used, R creates the .Random.seed in the global environment, that will control the subsequent random operations (vector of number used by the random number generator). The .Random.seed object is systematically stored in the global environment, wherever the environment of set.seed() or runif() execution
+# thanks to this code, when the function end, .Random.seed recovers the last vector of .Random.seed, whatever random execution performed by the function. Thus, if a set.seed() was performed in the global environment, the reproducibility of successive random operation in this environment will not be impaired
+# Example:
+## open a new R session. Then
+## myfunction <- function (){if(exists(".Random.seed", envir = .GlobalEnv)){old <- .Random.seed ; on.exit(assign(".Random.seed", old, env = .GlobalEnv))} ; set.seed(2) ; runif(1)}
+## set.seed(1) ; rnorm(1) ; rnorm(1) ; rnorm(1)
+## rerun the same in a new session but without the previous line
+## set.seed(1) ; rnorm(1) ; myfunction() ; rnorm(1) ; rnorm(1)
+if(exists(".Random.seed", envir = .GlobalEnv)){ # .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 set.seed()
+}
+# end code that does not affect set.seed() in the global environment
+set.seed(seed)
+}
+ini.date <- Sys.time()
+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
+warnings <- NULL
+# variable allocation before the loops to save time
+date.tempo <- Sys.time()
+time.tempo <- as.numeric(date.tempo)
+lapse.tempo <- lubridate::seconds_to_period(time.tempo - ini.time)
+pos <- 0 # position randomly selected
+tempo.count.print <- count.print # for the printing message
+# end variable allocation before the loops to save time
+if(is.null(data2)){
+if(tempo.count.print > n){
+tempo.count.print <- n
+}
+count <- 0
+# pos.check <- NULL
+for(i2 in 1:n){
+count[1] <- count + 1
+pos[1] <- sample(x = ini.pos[-length(data1)], size = 1, replace = FALSE) # selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
+tempo.pos[(pos + 1):pos] <- tempo.pos[pos:(pos + 1)]
+if(count == tempo.count.print){
+tempo.count.print[1] <- tempo.count.print + count.print
+date.tempo[1] <- Sys.time()
+time.tempo[1] <- as.numeric(date.tempo)
+lapse.tempo[1] <- lubridate::seconds_to_period(time.tempo - ini.time)
+print(paste0("LOOP ", i2, " / ", n, ifelse(text.print == "", "", paste0(" | ", text.print)), " | TIME SPENT: ", lapse.tempo))
+}
+# pos.check <- c(pos.check, pos)
+}
+}else{
+tempo.cor <- cor(x = data1, y = data2, use = "pairwise.complete.obs", method = "spearman")
+if(tempo.cor < 0){
+tempo.warnings <- paste0("INITIAL ", toupper(cor.method), " CORRELATION BETWEEN data1 AND data2 HAS BEEN DETECTED AS NEGATIVE: ", tempo.cor, ".THE cor.limit PARAMETER WILL BE SWITCHED TO THE NEGATIVE EQUIVALENT: ", -datacor.limit)
+warnings <- paste0(warnings, ifelse(is.null(warnings), "", "\n"), tempo.warnings) # in fact, abs(tempo.cor) is systematicallu used
+}
+if(abs(tempo.cor) < cor.limit){ # randomize directly all the position to be close to correlation zero
+for(i1 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)
+}
+}else{
+count <- 0
+while(abs(tempo.cor) > cor.limit){
+count[1] <- count + 1
+pos[1] <- sample(x = ini.pos[-length(data1)], size = 1, replace = FALSE) # selection of 1 position in initial position, without the last because always up permutation (pos -> pos+1 & pos+1 -> pos)
+tempo.pos[(pos + 1):pos] <- tempo.pos[pos:(pos + 1)]
+tempo.cor[1] <- cor(x = data1[tempo.pos], y = data2, use = "pairwise.complete.obs", method = cor.method)
+if(count == tempo.count.print){
+tempo.count.print[1] <- tempo.count.print + count.print
+date.tempo[1] <- Sys.time()
+time.tempo[1] <- as.numeric(date.tempo)
+lapse.tempo[1] <- lubridate::seconds_to_period(time.tempo - ini.time)
+print(paste0("LOOP ", count, " / ? (WHILE LOOP) ", ifelse(text.print == "", "", paste0(" | ", text.print)), " PERMUTATION IN data1 | CORRELATION LIMIT: ", cor.limit, " | TEMPO CORRELATION: ", round(tempo.cor, 3), " | TIME SPENT: ", lapse.tempo))
+}
+}
+}
+}
+output <- list(data = data1[tempo.pos], warnings = warnings, cor = ifelse(is.null(data2), cor(ini.pos, tempo.pos, method = "spearman"), tempo.cor))
+return(output)
+}
+
+
+################ Graphics management
 
 
 # this order can be used:
 # fun_window_width_resizing()
 # fun_open_window()
-# fun_graph_param_prior_plot() # not for ggplot2
+# fun_prior_plot() # not for ggplot2
 # plot() or any other plotting
-# fun_feature_post_plot() if fun_graph_param_prior_plot() has been used # not for ggplot2
+# fun_post_plot() if fun_prior_plot() has been used # not for ggplot2
 # fun_close_specif_window()
 
 
@@ -1724,56 +2184,60 @@ fun_mat_inv <- function(mat){
 
 # Check OK: clear to go Apollo
 fun_window_width_resizing <- 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_window_width_resizing()
-    # fun_open_window()
-    # fun_graph_param_prior_plot() # not for ggplot2
-    # plot() or any other plotting
-    # fun_feature_post_plot() if fun_graph_param_prior_plot() has been used # not for ggplot2
-    # fun_close_specif_window()
-    # REQUIRED FUNCTIONS
-    # fun_param_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_window_width_resizing(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_window_width_resizing(): REQUIRED fun_param_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_param_check(data = class.nb, typeof = "integer", length = 1, double.as.integer.allowed = TRUE, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = inches.per.class.nb, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = ini.window.width, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = inch.left.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = inch.right.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = boundarie.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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_window_width_resizing()
+# fun_open_window()
+# 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_specif_window()
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_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_window_width_resizing(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check(data = inches.per.class.nb, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = ini.window.width, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = inch.left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = inch.right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_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_param_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)
 }
 
 
@@ -1782,642 +2246,654 @@ fun_window_width_resizing <- function(class.nb, inches.per.class.nb = 1, ini.win
 
 # Check OK: clear to go Apollo
 fun_open_window <- 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_window_width_resizing()
-    # fun_open_window()
-    # fun_graph_param_prior_plot() # not for ggplot2
-    # plot() or any other plotting
-    # fun_feature_post_plot() if fun_graph_param_prior_plot() has been used # not for ggplot2
-    # fun_close_specif_window()
-    # REQUIRED FUNCTIONS
-    # fun_param_check()
-    # ARGUMENTS:
-    # pdf.disp: use pdf or not
-    # path.fun: where the pdf is saved. 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_window(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_open_window(): REQUIRED fun_param_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_param_check(data = pdf.disp, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = path.fun, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = pdf.name.file, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = width.fun, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = height.fun, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = path.fun, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = paper, options = c("a4", "letter", "legal", "us", "executive", "a4r", "USr", "special", "A4", "LETTER", "LEGAL", "US"), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data =no.pdf.overwrite, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = return.output, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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 fun_open_window(): 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 bacause 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_window(): 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 bacause 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 fun_open_window(): 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 bacause 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_window(): 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 bacause 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 fun_open_window(): 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_window(): 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)
-    }
-}
-
-
-######## fun_graph_param_prior_plot() #### Graph param before plotting
+# 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_window_width_resizing()
+# fun_open_window()
+# 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_specif_window()
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# ARGUMENTS:
+# pdf.disp: use pdf or not
+# path.fun: where the pdf is saved. 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_window(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = pdf.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = pdf.name.file, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = width.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = height.fun, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = path.fun, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check(data =no.pdf.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_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_param_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_window(): 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_window(): 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_window(): 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)
+}
+}
+
+
+######## fun_prior_plot() #### Graph param before plotting
 
 
 # Check OK: clear to go Apollo
-fun_graph_param_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_feature_post_plot()
-    # reinitialize and set the graphic parameters before plotting
-    # CANNOT be used if no graphic device already opened
-    # REQUIRED FUNCTIONS
-    # fun_param_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_feature_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_feature_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_graph_param_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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_graph_param_prior_plot(): REQUIRED fun_param_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_param_check(data = param.reinitial, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = xlog.scale, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = ylog.scale, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = remove.label, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = remove.x.axis, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = remove.y.axis, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = std.x.range, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = std.y.range, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = down.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = left.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = up.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = right.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = orient, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = dist.legend, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = tick.length, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = amplif.label, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = amplif.axis, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = display.extend, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = return.par, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    if(is.null(dev.list())){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_graph_param_prior_plot(): 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 bacause 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 fun_graph_param_prior_plot(): 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 bacause 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 bacause 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_graph_param_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 bacause 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_feature_post_plot() #### Graph param after plotting
+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_param_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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = param.reinitial, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = xlog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = ylog.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = remove.label, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = remove.x.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = remove.y.axis, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = display.extend, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_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_param_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_post_plot() #### Graph param after plotting
 
 
 # Check OK: clear to go Apollo
-fun_feature_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_graph_param_prior_plot() before this function for initial inactivation of the axis drawings
-    # REQUIRED FUNCTIONS
-    # fun_param_check()
-    # fun_open_window() 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_graph_param_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_feature_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_graph_param_prior_plot(param.reinitial = TRUE) ; plot(1:100) ; fun_feature_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) ; 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_feature_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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_feature_post_plot(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(length(find("fun_open_window", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_feature_post_plot(): REQUIRED fun_open_window() 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_param_check(data = x.side, options = c(0, 1, 3), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = x.log.scale, class = "logical", length = 1) ; eval(ee)
-    if( ! is.null(x.categ)){
-        tempo <- fun_param_check(data = x.categ, class = "character", na.contain = TRUE) ; eval(ee)
-    }
-    if( ! is.null(x.categ.pos)){
-        tempo <- fun_param_check(data = x.categ.pos, mode = "numeric") ; eval(ee)
-    }
-    tempo <- fun_param_check(data = x.lab, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = x.axis.magnific, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = x.label.magnific, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = x.dist.legend, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = x.nb.inter.tick, typeof = "integer", length = 1, double.as.integer.allowed = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = y.side, options = c(0, 2, 4), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = y.log.scale, class = "logical", length = 1) ; eval(ee)
-    if( ! is.null(y.categ)){
-        tempo <- fun_param_check(data = y.categ, class = "character", na.contain = TRUE) ; eval(ee)
-    }
-    if( ! is.null(y.categ.pos)){
-        tempo <- fun_param_check(data = y.categ.pos, mode = "numeric") ; eval(ee)
-    }
-    tempo <- fun_param_check(data = y.lab, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = y.axis.magnific, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = y.label.magnific, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = y.dist.legend, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = y.nb.inter.tick, typeof = "integer", length = 1, double.as.integer.allowed = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = text.angle, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = tick.length, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = sec.tick.length, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    if( ! is.null(bg.color)){
-        tempo <- fun_param_check(data = bg.color, class = "character", length = 1) ; eval(ee)
-        if( ! (bg.color %in% colors() | grepl(pattern = "^#", bg.color))){ # check color
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_feature_post_plot(): bg.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    if( ! is.null(grid.lwd)){
-        tempo <- fun_param_check(data = grid.lwd, mode = "numeric", neg.values = FALSE) ; eval(ee)
-    }
-    if( ! is.null(grid.col)){
-        tempo <- fun_param_check(data = grid.col, class = "character", length = 1) ; eval(ee)
-        if( ! (grid.col %in% colors() | grepl(pattern = "^#", grid.col))){ # check color
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_feature_post_plot(): grid.col ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # OR A COLOR NAME GIVEN BY colors()\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    tempo <- fun_param_check(data = corner.text, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = magnific.corner.text, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = just.label.add, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = par.reset, class = "logical", length = 1) ; eval(ee)
-    if( ! is.null(custom.par)){
-        tempo <- fun_param_check(data = custom.par, typeof = "list", length = 1) ; eval(ee)
-    }
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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_window(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 fun_feature_post_plot(): 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_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_param_check()
+# fun_open_window() 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) ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_open_window", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open_window() 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_param_check(data = x.side, options = c(0, 1, 3), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = x.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(x.categ)){
+tempo <- fun_param_check(data = x.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(x.categ.pos)){
+tempo <- fun_param_check(data = x.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = x.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = x.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = x.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = x.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check(data = y.side, options = c(0, 2, 4), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = y.log.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(y.categ)){
+tempo <- fun_param_check(data = y.categ, class = "character", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(y.categ.pos)){
+tempo <- fun_param_check(data = y.categ.pos, class = "vector", mode = "numeric", fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = y.lab, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = y.axis.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = y.label.magnific, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = y.dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check(data = text.angle, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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")
+stop(tempo.cat)
+}
+}
+if( ! is.null(grid.lwd)){
+tempo <- fun_param_check(data = grid.lwd, class = "vector", mode = "numeric", neg.values = FALSE, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(grid.col)){
+tempo <- fun_param_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")
+stop(tempo.cat)
+}
+}
+tempo <- fun_param_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = just.label.add, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = par.reset, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(custom.par)){
+tempo <- fun_param_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_param_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_param_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_param_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_window(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)
 }
 
 
@@ -2426,456 +2902,3156 @@ fun_feature_post_plot <- function(x.side = 0, x.log.scale = FALSE, x.categ = NUL
 
 # Check OK: clear to go Apollo
 fun_close_specif_window <- function(kind = "pdf", return.text = FALSE){
-    # AIM:
-    # close only specific graphic windows (devices)
-    # REQUIRED FUNCTIONS
-    # fun_param_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_specif_window(kind = c("pdf", "x11"), return.text = TRUE) ; dev.list()
-    # DEBUGGING
-    # kind = c("windows", "pdf") ; return.text = FALSE # for function debugging
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_close_specif_window(): REQUIRED fun_param_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_param_check(data = kind, options = c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff")) ; eval(ee)
-    tempo <- fun_param_check(data = return.text, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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)
-    }
+# AIM
+# close only specific graphic windows (devices)
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_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_specif_window(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = kind, options = c("windows", "quartz", "x11", "X11", "pdf", "bmp", "png", "tiff"), fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_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_param_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_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs
+################ Standard graphics
 
 
-fun_var_trim_display <- 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
-    # fun_param_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_var_trim_display(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_var_trim_display(): REQUIRED fun_param_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( ! (all(class(data) == "numeric") | all(class(data) == "integer") | (all(class(data) == "matrix") & mode(data) == "numeric"))){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_var_trim_display(): data ARGUMENT MUST BE A NUMERIC VECTOR OR NUMERIC MATRIX\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if( ! is.null(displayed.nb)){
-        tempo <- fun_param_check(data = displayed.nb, mode = "numeric", length = 1) ; eval(ee)
-        if(displayed.nb < 2){
-            tempo.cat <- paste0("\n\n================\n\nERROR IN fun_var_trim_display(): displayed.nb ARGUMENT MUST BE A SINGLE INTEGER VALUE GREATER THAN 1 AND NOT: ", paste(displayed.nb, collapse = " "), "\n\n================\n\n")
-            stop(tempo.cat)
-        }
-    }
-    tempo <- fun_param_check(data = single.value.display, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = trim.method, options = c("", "mean.sd", "quantile"), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = trim.cutoffs, mode = "numeric", length = 2, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = interval.scale.disp, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = down.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = left.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = up.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = right.space, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = orient, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = dist.legend, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = amplif.label, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = amplif.axis, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = std.x.range, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = std.y.range, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = cex.pt, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = col.box, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = x.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = y.nb.inter.tick, class = "integer", length = 1, neg.values = FALSE, double.as.integer.allowed = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = tick.length, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = sec.tick.length, mode = "numeric", length = 1, prop = TRUE) ; eval(ee)
-    tempo <- fun_param_check(data = corner.text, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = amplif.legend, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = magnific.corner.text, mode = "numeric", length = 1, neg.values = FALSE) ; eval(ee)
-    tempo <- fun_param_check(data = trim.return, class = "logical", length = 1) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_check()
-    # end argument checking
-    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_empty_graph() #### text to display for empty graphs
+
+
+# Check OK: clear to go Apollo
+fun_empty_graph <- function(text, title = NULL, text.size = 1){
+# 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
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# RETURN
+# an empty plot
+# EXAMPLES
+# fun_empty_graph(text = "NO GRAPH", title = "GRAPH1")
+# 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.size, class = "vector", mode = "numeric", 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_param_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_param_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_param_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]))
+text(x = 1, y = 1, labels = text, cex = text.size)
+text(x = x.left.dev.region, y = y.top.dev.region, labels = title, adj=c(0, 1), cex = text.size)
+par(ini.par)
 }
 
 
-################ Exporting results (text & tables)
+################ gg graphics
 
 
-######## fun_export_data() #### Print string or data object into output file
+######## fun_gg_palette() #### ggplot2 default color palette
 
 
 # Check OK: clear to go Apollo
-fun_export_data <- 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
-    # fun_param_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_export_data()
-    # fun_export_data(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
-    # required function checking
-    if(length(find("fun_param_check", mode = "function")) == 0){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_export_data(): REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end required function checking
-    # argument checking
-    if(is.null(data)){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_export_data(): data ARGUMENT CANNOT BE NULL\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    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_param_check(data = output, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = path, class = "character", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = no.overwrite, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = rownames.kept, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = vector.cat, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = noquote, class = "logical", length = 1) ; eval(ee)
-    tempo <- fun_param_check(data = sep, typeof = "integer", length = 1, double.as.integer.allowed = TRUE) ; eval(ee)
-    if(any(arg.check) == TRUE){
-        stop() # nothing else because print = TRUE by default in fun_param_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_param_check_dev)) # activate this line and use the function to check arguments status and if they have been checked using fun_param_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 fun_export_data(): 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)
-    # }
-    if(output == ""){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_export_data(): output ARGUMENT DOES NOT CORRESPOND TO A VALID CHARACTER STRING\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    if(dir.exists(path) == FALSE){
-        tempo.cat <- paste0("\n\n================\n\nERROR IN fun_export_data(): path ARGUMENT DOES NOT CORRESPOND TO EXISTING DIRECTORY\n\n================\n\n")
-        stop(tempo.cat)
-    }
-    # end argument checking
-    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 (beacause 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
+fun_gg_palette <- function(n){
+# 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
+# REQUIRED PACKAGES
+# none
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# RETURN
+# the vector of hexadecimal colors
+# EXAMPLES
+# fun_gg_palette(n = 2)
+# plot(1, pch = 16, cex = 5, col = fun_gg_palette(n = 2)[2]) # second color of the two color ggplot2 palette
+# DEBUGGING
+# n = 0
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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")
+stop(tempo.cat)
+}
+if(any(arg.check) == TRUE){
+stop() # nothing else because print = TRUE by default in fun_param_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_param_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_param_check()
+# end argument checking
+# main code
+hues = seq(15, 375, length = n + 1)
+hcl(h = hues, l = 65, c = 100)[1:n]
+}
+
+
+######## 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", xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 0.5, title = "", text.size = 12, return = FALSE, classic = 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
+# 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 hline or vline geom
+# 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) y argument must be NULL, (2) 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
+# xlim: 2 numeric values for x-axis range. If NULL, range of x of all the data frames in data1
+# ylim: 2 numeric values for y-axis range. If NULL, range of y of all the data frames in data1
+# extra.margin: single proportion (between 0 and 1) indicating if extra margins must be added to xlim and ylim. If different from 0, add the range of the axis * extra.margin (e.g., abs(xlim[2] - xlim[1]) * extra.margin) on each side of the axis
+# xlab: a character string for x-axis legend. If NULL, x of the first data frame in data1. Warning message if the x are different between data frames in data1
+# ylab: a character string y-axis legend. If NULL, y of the first data frame in data1. Warning message if the y are different between data frames in data1
+# pt.size: numeric value of point size
+# li.size: numeric value of line size
+# alpha: numeric value (from 0 to 1) of the mask transparency
+# title: character string of the graph title
+# text.size: numeric value of the text size (in points)
+# return: logical. Return the graph parameters?
+# classic: logical. Use the classic theme (article like)?
+# 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_param_check()
+# fun_pack_import()
+# fun_gg_palette()
+# RETURN
+# a scatter plot
+# a list of the graph info if return argument is TRUE:
+# data: the graphic info coordinates
+# warnings: the warning messages
+# EXAMPLES
+# obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = list(L1 = names(obs1)[3]), legend.name = NULL, color = NULL, geom = list(L1 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = FALSE, classic = FALSE)
+# obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = NULL, legend.name = NULL, geom = list(L1 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = "test_x", ylab = "test_y", color = list(L1 = 5), pt.size = 2, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 15, return = TRUE, classic = FALSE)
+# obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = NULL, legend.name = NULL, geom = list(L1 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = "test_x", ylab = "test_y", color = list(L1 = 5), pt.size = 2, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 15, return = TRUE, classic = FALSE)
+# 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"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3]), legend.name = list(L1 = "GROUP1", L2 = "GROUP2"), color = list(L1 = fun_gg_palette(4)[1:2], L2 = fun_gg_palette(4)[3:4]), geom = list(L1 = "geom_point", L2 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 2, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = fun_gg_palette(7)[1:2], L2 = fun_gg_palette(7)[3:4], L3 = fun_gg_palette(7)[5:7]), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], NULL), legend.name = NULL, color = list(L1 = fun_gg_palette(7)[1:2], L2 = fun_gg_palette(7)[3:4], L3 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = NULL), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = "red", L2 = "blue", L3 = "green"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_vline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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 ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = NULL), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = "red", L2 = "blue", L3 = "green"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_vline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = NULL, legend.name = list(L1 = "A", L2 = "B", L3 = "C"), color = list(L1 = "black", L2 = 2, L3 = "purple"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 20, return = TRUE, classic = TRUE, path.lib = NULL)
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A1", "A2", "A3", "B1", "B2", "B3"))) ; data1$L1$a[2:3] <- NA ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = NULL) ; categ = list(L1 = names(data1$L1)[3]) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1]), y = list(L1 = NULL), categ = list(L1 = names(data1$L1)[3]), legend.name = list(L1 = "VALUE"), color = list(L1 = "red"), geom = list(L1 = "geom_hline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = TRUE, path.lib = NULL)
+# DEBUGGING
+# data1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; x = names(data1)[1] ; y = names(data1)[2] ; categ = names(data1)[3] ; legend.name = NULL ; color = NULL ; geom = "geom_point" ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 1 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = FALSE ; classic = FALSE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B"))) ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = names(data1$L1)[2]) ; categ = list(L1 = names(data1$L1)[3]) ; legend.name = list(L1 = "VALUE") ; color = NULL ; geom = list(L1 = "geom_point") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 1 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = FALSE ; classic = FALSE ; 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"))) ; x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1]) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2]) ; categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3]) ; legend.name = list(L1 = "GROUP1", L2 = "GROUP2") ; color = NULL ; geom = list(L1 = "geom_point", L2 = "geom_path") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 1 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = FALSE ; classic = FALSE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group1 = c("A", "A", "A", "B", "B", "B")), L2 = data.frame(a = (1:6)*2, b = ((1:6)^2)*2, group2 = c("A1", "A1", "A1", "B1", "B1", "B1"))) ; x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1]) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2]) ; categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3]) ; legend.name = list(L1 = "GROUP1", L2 = "GROUP2") ; color = list(L1 = 1:2, L2 = 3:4) ; geom = list(L1 = "geom_point", L2 = "geom_line") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 2 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = TRUE ; classic = FALSE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B"))) ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = names(data1$L1)[2]) ; categ = NULL ; legend.name = NULL ; color = list(L1 = 5) ; geom = list(L1 = "geom_point") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = "x test" ; ylab = "y test" ; pt.size = 2 ; li.size = 0.5 ; alpha = 1 ; title = "GRAPH1" ; text.size = 15 ; return = TRUE ; classic = FALSE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A1", "A2", "A3", "B1", "B2", "B3"))) ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = NULL) ; categ = list(L1 = names(data1$L1)[3]) ; legend.name = list(L1 = "VALUE") ; color = list(L1 = "red") ; geom = list(L1 = "geom_hline") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 1 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = TRUE ; classic = TRUE ; path.lib = NULL
+# data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A1", "A2", "A3", "B1", "B2", "B3"))) ; data1$L1$a[2:3] <- NA ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = NULL) ; categ = list(L1 = names(data1$L1)[3]) ; legend.name = list(L1 = "VALUE") ; color = list(L1 = "red") ; geom = list(L1 = "geom_hline") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 1 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = TRUE ; classic = 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 = names(data1$L3)[1]) ; y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = NULL) ; categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]) ; legend.name = NULL ; color = list(L1 = "red", L2 = "blue", L3 = "green") ; geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_vline") ; xlim = NULL ; ylim = NULL ; extra.margin = 0.05 ; xlab = NULL ; ylab = NULL ; pt.size = 4 ; li.size = 0.5 ; alpha = 0.5 ; title = "GRAPH1" ; text.size = 12 ; return = TRUE ; classic = FALSE ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() 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)
+}
+# end required function checking
+# 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("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( ! (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)
+}
+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)
+}
+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)
+}
+}
+# 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)
+}
+}
+# 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
+# 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_param_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 compatment 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_param_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)
+tempo <- fun_param_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)
+# check of geom now because required for y argument
+tempo <- fun_param_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(y[[i1]])){
+if(all(geom[[i1]] != "geom_hline") & 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_hline\" OR \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}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("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_hline") | 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 NON NULL IF ", ifelse(length(geom) == 1, "y", paste0("geom NUMBER ", i1)), " ARGUMENT IS \"geom_hline\" OR \"geom_vline\"\nHERE geom ARGUMENT IS: ", paste(geom[[i1]], collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}
+tempo <- fun_param_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")
+stop(tempo.cat)
+}
+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")
+stop(tempo.cat)
+}
+# na detection and removal (done now to be sure of the correct length of categ)
+if(any(is.na(data1[[i1]][, c(x[[i1]], if(y[[i1]] == "fake_y"){NULL}else{y[[i1]]})]))){
+tempo.removed.row.nb <- unlist(lapply(lapply(c(data1[[i1]][c(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("NA DETECTED IN COLUMN ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), if(y[[i1]] == "fake_y"){""}else{paste0(" AND ", 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_param_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 = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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")
+stop(tempo.cat)
+}
+# 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("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_param_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_param_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")
+stop(tempo.cat)
+}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("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")
+stop(tempo.cat)
+}
+}
+}else if(( ! is.null(categ)) & is.null(categ[[i1]])){ # if categ[[i1]] = NULL, fake_categ will be created 
+categ[[i1]] <- "fake_categ"
+data1[[i1]] <- cbind(data1[[i1]], fake_categ = "")
+data1[[i1]][, "fake_categ"] <- as.numeric(data1[[i1]][, "fake_categ"])
+tempo.warning <- paste0("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_param_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("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_param_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_param_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
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}
+if(any(is.na(color[[i1]]))){
+tempo.warning <- paste0("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")
+stop(tempo.cat)
+}else if( ! is.null(categ)){
+# No problem of NA management by ggplot2 because already removed
+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("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(tempo.check) == 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")
+stop(tempo.cat)
+}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("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")
+stop(tempo.cat)
+}
+}
+}
+}
+if(length(data1) > 1){
+if(length(unique(unlist(x))) > 1){
+tempo.warning <- paste0("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("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")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}
+if( ! is.null(xlim)){
+tempo <- fun_param_check(data = xlim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(ylim)){
+tempo <- fun_param_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(xlab)){
+tempo <- fun_param_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(ylab)){
+tempo <- fun_param_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = pt.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = li.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_check()
+# end argument checking
+# package checking
+fun_pack_import(req.package = c("ggplot2"), path.lib = path.lib)
+# end package checking
+# main code
+# used for conversion of geom_hline and geom_vline
+for(i1 in 1:length(data1)){ # for geom_hline, x put into y, and x <- NA before xlim and ylim
+if(geom[[i1]] == "geom_hline"){
+data1[[i1]][, y[[i1]]] <- data1[[i1]][, x[[i1]]]
+# data1[[i1]][, x[[i1]]] <- NA
+}
+}
+# end used for conversion of geom_hline and geom_vline
+tempo.x.range <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, x, SIMPLIFY = FALSE)), na.rm = TRUE))
+tempo.y.range <- suppressWarnings(range(unlist(mapply(FUN = "[[", data1, y, SIMPLIFY = FALSE)), na.rm = TRUE))
+if(suppressWarnings(all(tempo.x.range %in% c(Inf, -Inf))) | suppressWarnings(all(tempo.y.range %in% c(Inf, -Inf)))){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, " geom_hline AND geom_vline CONVERSION: ", ifelse(length(x) == 1, "x", paste0("x NUMBER ", i1)), " AND ", ifelse(length(y) == 1, "y", paste0("y NUMBER ", i1)), " ARGUMENTS ARE NA ONLY\n\n================\n\n")
+stop(tempo.cat)
+}
+if(is.null(xlim)){
+# if(suppressWarnings(all(tempo.x.range %in% c(Inf, -Inf)))){
+# xlim <- tempo.y.range # because of the switch for geom_hline
+# }else{
+xlim <- tempo.x.range
+# }
+}
+if(is.null(ylim)){
+# if(suppressWarnings(all(tempo.y.range %in% c(Inf, -Inf)))){
+# ylim <- tempo.x.range # because of the switch for geom_hline
+# }else{
+ylim <- tempo.y.range
+# }
+}
+if( ! is.null(extra.margin)){
+xlim <- sort(xlim)
+xlim[1] <- xlim[1] - abs(xlim[2] - xlim[1]) * extra.margin
+xlim[2] <- xlim[2] + abs(xlim[2] - xlim[1]) * extra.margin
+ylim <- sort(ylim)
+ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * extra.margin
+ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * extra.margin
+}
+# 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 = "")
+}
+tempo.warning <- paste0("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)])})
+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("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(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)
+}
+}
+# 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: CODE INCONSISTENCY\n\n============\n\n"))
+stop(tempo.cat)
+}
+tempo.data.frame[, categ[[i1]]] <- paste0("Line_", i3)
+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: ", 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
+
+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))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_x_continuous(expand = c(0, 0), limits = NA))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(expand = c(0, 0), limits = NA))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(xlim = xlim, ylim = ylim))
+if(classic == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme_classic(base_size = text.size))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::theme(text = ggplot2::element_text(size = text.size)))
+}
+# end no need loop part
+point.count <- 0
+line.count <- 0
+for(i1 in 1:length(data1)){
+if(geom[[i1]] == "geom_point"){
+point.count <- point.count + 1
+if(point.count == 1){
+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), ggplot2::geom_point(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], fill = categ[[i1]]), size = pt.size, color = color[[i1]][i5], alpha = alpha, show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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
+}
+if(point.count == 2){
+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), ggplot2::geom_point(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], shape = categ[[i1]]), size = pt.size, color = color[[i1]][i5], alpha = alpha, show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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){
+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), ggplot2::geom_point(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], stroke = categ[[i1]]), size = pt.size, color = color[[i1]][i5], alpha = alpha, show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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){
+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), get(geom[[i1]])(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], linetype = categ[[i1]]), color = color[[i1]][i5], size = li.size, lineend = "round", show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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
+}
+if(line.count == 2){
+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), get(geom[[i1]])(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], alpha = categ[[i1]]), color = color[[i1]][i5], size = li.size, lineend = "round", show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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(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
+}
+if(line.count == 3){
+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), get(geom[[i1]])(data = tempo.data.frame, mapping = ggplot2::aes_string(x = x[[i1]], y = y[[i1]], size = categ[[i1]]), color = color[[i1]][i5], size = li.size, lineend = "round", show.legend = TRUE)) # beware: a single color allowed for color argumant outside aesthetic, hence the loop
+}
+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(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
+}
+}
+}
+# no need loop part
+# end no need loop part
+suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+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, warnings = paste0("\n", warning, "\n\n"))
+return(output)
+}
+}
+
+
+######## fun_gg_bar_mean() #### ggplot2 mean barplot + overlaid dots if required
+
+
+  
+
+# verif all coord objects, and output of aggregate anf merge to forbide some column names (like x.y) or pass them to upper case + warning
+
+# 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 = FALSE, y.break.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, 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, 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)
+# 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 stroke
+# 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. Log10 scale for the y-axis? 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.break.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)
+# 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
+# REQUIRED PACKAGES
+# ggplot2
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# fun_pack_import()
+# fun_gg_palette()
+# fun_round()
+# fun_2D_comp()
+# RETURN
+# a barplot
+# 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 info coordinates
+# warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# nice representation (1)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.class.order = list(NULL, c("B", "A")), categ.legend.name = "LEGEND", categ.color = NULL, dot.color = "same", error.disp = "SD", bar.width = 0.3, error.whisker.width = 0.8, dot.jitter = 0.5, ylim = c(10, 25), y.include.zero = TRUE, xlab = "GROUP", ylab = "MEAN", dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 0.5, stat.disp = "above", stat.size = 4, title = "GRAPH1", text.size = 20, return = TRUE, y.break.nb = NULL, classic = TRUE, grid = TRUE)
+# nice representation (2)
+# set.seed(1) ; obs1 <- data.frame(a = c(rnorm(24, 0), rnorm(24, -10), rnorm(24, 10), rnorm(24, 20)), group1 = rep(c("G", "H"), times = 48), group2 = rep(c("A", "B", "C", "D"), each = 24)) ; set.seed(NULL) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.class.order = list(NULL, c("B", "A", "D", "C")), categ.legend.name = "LEGEND", categ.color = NULL, dot.color = "same", bar.width = 0.8, dot.tidy = TRUE, dot.bin.nb = 60, ylim= c(-20, 25), vertical = FALSE, xlab = "GROUP", ylab = "MEAN", dot.size = 3.5, dot.border.size = 0.2, dot.alpha = 1, stat.disp = "above", stat.size = 4, stat.dist = 1, title = "GRAPH1", text.size = 20, return = TRUE, y.break.nb = NULL, classic = FALSE)
+# separate bars, modification of bar color (1) (a single value)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = "white")
+# separate bars, modification of bar color (2) (one value par class of categ2)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = c("red", "blue"))
+# separate bars, modification of bar color (3) (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), bar.color = rep(c("brown", "orange"), time = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = obs1$bar.color)
+# separate bars, modification of dot color (1) (same dot color as the corresponding bar)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "same")
+# separate bars, modification of dot color (2) (single color for all the dots)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "green")
+# separate bars, modification of dot color (3) (one value par class of categ2)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = c("green", "brown"))
+# separate bars, modification of dot color 4 (any color for each dot)
+# obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
+# grouped bars, default arguments
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"))
+# more grouped bars
+# obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), return = TRUE)
+# grouped bars, log scale. Beware, y column must be log, otherwise incoherent scale
+# obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), ylog = TRUE) 
+# grouped bars, no dots (y.include.zero = TRUE to see the lowest bar)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, y.include.zero = TRUE)
+# grouped bars, modification of bar color (1) (a single value)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = "white")
+# grouped bars, modification of bar color (2) (one value par class of categ2)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = c("red", "blue"))
+# grouped bars, modification of bar color (3) (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+# obs1 <- 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)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = obs1$bar.color)
+# grouped bars, modification of dot color (1) (same dot color as the corresponding bar)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "same")
+# grouped bars, modification of dot color (2) (single color for all the dots)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "green")
+# grouped bars, modification of dot color (3) (one value par class of categ2)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = c("green", "brown"))
+# grouped bars, modification of dot color (4) (any color for each dot)
+# obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5), group2 = rep(c("A", "B"), each = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1)))
+# width example. With bar.width = 0.25, three times more space between single bars than the bar width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 0.25, y.include.zero = TRUE)
+# width example. With bar.width = 1, no space between single bars
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), each = 500)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 1, y.include.zero = TRUE)
+# width example. With bar.width = 0.25, three times more space between sets of grouped bars than the set width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 0.25, y.include.zero = TRUE)
+# width example. With bar.width = 0, no space between sets of grouped bars
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 1, y.include.zero = TRUE)
+# width example. With error.whisker.width = 1, whiskers have the width of the corresponding bar
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 1)
+# width example. No whiskers
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 0)
+# width example. With dot.jitter = 1, dispersion around the corresponding bar width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 1)
+# width example. No dispersion
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 0)
+# tidy dot example
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "same", dot.tidy = TRUE, dot.bin.nb = 100)
+# tidy dot example. Comparison with random spreading
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "same", dot.tidy = FALSE, dot.jitter = 1, dot.size = 2)
+# orientation example. Beware: log scale automatically set to FALSE for horizontal display, because of a bug in ggplot2 (https://github.com/tidyverse/ggplot2/issues/881)
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", dot.size = 3, dot.alpha = 1,  dot.jitter = 1, vertical = FALSE)
+# many arguments
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", 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.jitter = 1, dot.size = 4, dot.border.size = 0, dot.alpha = 1, ylim = NULL, ylog = FALSE, y.break.nb = NULL, y.include.zero = FALSE, y.top.extra.margin = 0.05, y.bottom.extra.margin = 0, stat.disp = "above", stat.size = 4, xlab = "GROUP", ylab = "MEAN", vertical = TRUE, title = "GRAPH1", text.size = 14, classic = TRUE, grid = TRUE, return = 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 = FALSE ; y.break.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 ; classic = FALSE ; grid = FALSE ; return = FALSE ; 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 = FALSE ; y.break.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 ; classic = FALSE ; grid = FALSE ; return = FALSE ; 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 = FALSE ; y.break.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 ; title = "" ; text.size = 12 ; classic = FALSE ; grid = FALSE ; return = FALSE ; 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 = "a" ; 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.2 ; dot.alpha = 1 ; ylim= c(-15, 25) ; ylog = FALSE ; y.break.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 ; title = "GRAPH1" ; text.size = 20 ; return = TRUE ; classic = FALSE ; grid = FALSE ; return = FALSE ; path.lib = NULL
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.disp = "SD", error.whisker.width = 1)
+
+# set.seed(1) ; data1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; set.seed(NULL) ; y = "a" ; 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(-15, 25) ; ylog = FALSE ; y.break.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 = 1 ; xlab = "GROUP" ; ylab = "MEAN" ; vertical = TRUE ; title = "GRAPH1" ; text.size = 20 ; return = TRUE ; classic = FALSE ; grid = FALSE ; return = FALSE ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() 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_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_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)
+}
+# end required function checking
+# 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_param_check(data = data1, class = "data.frame", na.contain = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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")
+stop(tempo.cat)
+}else if(tempo$problem == FALSE){
+if(any(y %in% c("x", "y", "ymax", "x.y", "group"))){
+tempo.warning <- paste0("RISK OF BUG BECAUSE NAMES IN y ARGUMENT ARE ALSO USED BY FUNCTIONS LIKE merge() OR aggregate()\nIT IS RECOMMENDED TO AVOID THESE COLUMN NAMES IN data1: \"x\", \"y\", \"ymax\", \"x.y\", \"group\"")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo <- fun_param_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_param_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")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}else if(any(categ %in% c("x", "y", "ymax", "x.y", "group"))){
+tempo.warning <- paste0("RISK OF BUG BECAUSE NAMES IN categ ARGUMENT ARE ALSO USED BY FUNCTIONS LIKE merge() OR aggregate()\nIT IS RECOMMENDED TO AVOID THESE COLUMN NAMES IN data1: \"x\", \"y\", \"ymax\", \"x.y\", \"group\"")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+# 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("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("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_param_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_param_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")
+stop(tempo.cat)
+}else if(tempo1$problem == FALSE){
+tempo.warning <- paste0("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_param_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")
+stop(tempo.cat)
+}else if(tempo$problem == FALSE){
+for(i3 in 1:length(categ.class.order)){
+if(is.null(categ.class.order[[i3]])){
+tempo.warning <- paste0("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")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}else{
+data1[, categ[i3]] <- factor(data1[, categ[i3]], levels = categ.class.order[[i3]]) # reorder the factor
+
+}
+}
+}
+}
+if( ! is.null(categ.legend.name)){
+tempo <- fun_param_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_param_check(data = categ.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_param_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_param_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
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}
+if(any(is.na(categ.color))){
+tempo.warning <- paste0("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("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")
+stop(tempo.cat)
+}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("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("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")
+stop(tempo.cat)
+}
+}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("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_param_check(data = bar.width, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(error.disp)){
+tempo <- fun_param_check(data = error.disp, options = c("SD", "SD.TOP", "SEM", "SEM.TOP"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_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_param_check(data = dot.color, class = "vector", mode = "character", na.contain = TRUE, fun.name = function.name, print = FALSE)
+tempo2 <- fun_param_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_param_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
+stop(tempo.cat)
+}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("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")
+stop(tempo.cat)
+}
+if(any(is.na(dot.color))){
+tempo.warning <- paste0("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("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("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")
+stop(tempo.cat)
+}
+}
+tempo <- fun_param_check(data = dot.tidy, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dot.bin.nb, class = "vector", typeof = "integer", length = 1, double.as.integer = TRUE, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dot.jitter, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dot.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dot.border.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dot.alpha, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(ylim)){
+tempo <- fun_param_check(data = ylim, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = ylog, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(y.break.nb)){
+tempo <- fun_param_check(data = y.break.nb, class = "vector", typeof = "integer", length = 1, double.as.integer.allowed = TRUE, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = y.include.zero, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ylog == TRUE & y.include.zero == TRUE){
+tempo.warning <- paste0("BOTH ylog AND y.include.zero ARGUMENTS SET TO TRUE -> y.include.zero ARGUMENT RESET TO FALSE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo <- fun_param_check(data = y.top.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = y.bottom.extra.margin, prop = TRUE, length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(stat.disp)){
+tempo <- fun_param_check(data = stat.disp, options = c("top", "above"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = stat.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = stat.dist, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(xlab)){
+tempo <- fun_param_check(data = xlab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(ylab)){
+tempo <- fun_param_check(data = ylab, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = vertical, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ylog == TRUE & vertical == FALSE){
+ylog <- FALSE
+tempo.warning <- paste0("BECAUSE OF A BUG IN ggplot2, CANNOT FLIP BARS HORIZONTALLY WITH A YLOG SCALE -> ylog ARGUMENT RESET TO FALSE")
+warning <- paste0(ifelse(is.null(warning), tempo.warning, paste0(warning, "\n\n", tempo.warning)))
+}
+tempo <- fun_param_check(data = title, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.size, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = classic, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = grid, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_check()
+# end argument checking (and modification for proper color management)
+# package checking
+fun_pack_import(req.package = c("ggplot2"), 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: CODE INCONSISTENCY\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: CODE INCONSISTENCY\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)){
+ylim <- range(c(data2[, "ERROR.INF"], data2[, "ERROR.SUP"]), na.rm = TRUE)
+}else{
+ylim <- range(data2[, y], na.rm = TRUE)
+}
+}else{
+ylim <- range(data1[, y], na.rm = TRUE)
+}
+}
+# end range depending on means and error bars
+ylim <- sort(ylim)
+ylim[1] <- ylim[1] - abs(ylim[2] - ylim[1]) * y.bottom.extra.margin
+ylim[2] <- ylim[2] + abs(ylim[2] - ylim[1]) * y.top.extra.margin
+if(y.include.zero == TRUE){ # no need to check ylog == TRUE because done before
+ylim <- range(c(ylim, 0), na.rm = TRUE)
+}
+if(ylog == TRUE & any(ylim < 0)){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": FINAL ylim RANGE SPAN NULL OR NEGATIVE VALUES:", paste(ylim, collapse = " "), "\nWHICH IS IMCOMPATIBLE WITH ylog PARAMETER SET TO TRUE\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: CODE INCONSISTENCY\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))
+if(classic == TRUE){
+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(
+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.y = ggplot2::element_line(colour = "grey75")
+))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+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"), 
+))
+}
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), m.gg <- ggplot2::theme(
+text = ggplot2::element_text(size = text.size), 
+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")
+))
+}
+# 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: CODE INCONSISTENCY\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", stroke = dot.border.size, 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
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_discrete_manual(aesthetics = "color", name = categ.legend.name, values = 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: CODE INCONSISTENCY\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: 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: 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: CODE INCONSISTENCY\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: 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: 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: CODE INCONSISTENCY\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+# end stat display
+# y scale management (cannot be before dot plot management)
+if(ylog == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::annotation_logticks(sides = "l")) # string containing any of "trbl", for top, right, bottom, and left
+if( ! is.null(y.break.nb)){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(breaks = fun_round(seq(ylim[1], ylim[2], length.out = y.break.nb), dec.nb = 2, after.lead.zero = TRUE)))
+}
+}else{
+if( ! is.null(y.break.nb)){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
+breaks = fun_round(seq(ylim[1], ylim[2], length.out = y.break.nb), dec.nb = 2, after.lead.zero = TRUE), 
+expand = c(0, 0),
+limits = NA
+))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_y_continuous(
+expand = c(0, 0),
+limits = NA
+))
+}
+}
+if(vertical == TRUE){
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_cartesian(ylim = ylim))
+}else{
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::coord_flip(ylim = ylim))
+}
+# end y scale  management (cannot be before dot plot management)
+suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+# end barplot
+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, warnings = paste0("\n", warning, "\n\n"))
+return(output)
+}
+}
+
+
+######## fun_gg_boxplot() #### ggplot2 boxplot + background dots if required
+
+# http://www.sthda.com/english/wiki/ggplot2-box-plot-quick-start-guide-r-software-and-data-visualization
+
+fun_gg_boxplot <- function(data1, y, categ, class.order = NULL, legend.name = NULL, categ.color = NULL, dot.color = "same", box.width = 0.5, whisker.width = 0.5, jitter = 0.25, ylim = NULL, ylog = FALSE, y.include.zero = FALSE, top.extra.margin = 0.05, bottom.extra.margin = 0, xlab = NULL, ylab = NULL, pt.size = 3, pt.border.size = 0.5, alpha = 0.5, show.stat = NULL, stat.size = 4, title = "", text.size = 12, break.nb = NULL, 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)
+# to have a single boxplot, 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 boxplots, 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 boxplots (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)
+# ARGUMENTS
+# data1: a dataframe containing one column of values (see y argument below) and one or two columns of categories (see categ argument below)
+# y: character string of the data1 column name for y-axis (containing numeric values). Numeric values will be used to generate the boxplots 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 boxplot per class of categ1. If two column names (further refered to as categ1 and categ2), then one boxplot per class of categ2, which form a group of boxplots 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 boxplot, 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 boxplots, create a factor column with a single class and specify this column in categ argument as first element (categ1)
+# class.order: list indicating the order of the classes of categ1 and categ2 represented on the boxplot (the first compartment for categ1 and and the second for categ2). If class.order = NULL, classes are represented according to the alphabetical order. Some compartment can be NULL and other not
+# legend.name: character string of the legend title for categ2. If legend.name = NULL, then legend.name <- categ1 if only categ1 is present and legend.name <- categ2 if categ1 and categ2 are present. Write "" if no legend required
+# categ.color: vector of character color string for boxplot color. 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 boxplots 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 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 boxplots inside a group of boxplots)
+# 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
+# box.width: numeric value (from 0 to 1) of the bar or set of grouped bar width (see warnings above)
+# 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
+# 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
+# ylim: 2 numeric values for y-axis range. If NULL, range of y in data1
+# ylog: logical. Log10 scale for the y-axis? Beware: if TRUE, ylim must not contain null or negative values
+# y.include.zero: logical. Does ylim range include 0? Beware: if ylog = TRUE, will be automately set to FALSE with a warning message
+# 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 * top.extra.margin (e.g., abs(ylim[2] - ylim[1]) * top.extra.margin) to the top of y-axis. Beware with ylog = TRUE, the range result must not overlap zero or negative values
+# bottom.extra.margin: idem as top.extra.margin but to the bottom of y-axis
+# 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
+# pt.size: numeric value of dot size
+# pt.border.size: numeric value of border dot size. Write zero for no stroke
+# alpha: numeric value (from 0 to 1) of dot transparency (full transparent to full opaque, respectively)
+# show.stat: 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 number size (in points)
+# title: character string of the graph title
+# text.size: numeric value of the text size (in points)
+# break.nb: number of desired values on the y-axis
+# classic: logical. Use the classic theme (article like)?
+# grid: logical. draw horizontal lines in the background to better read the boxplot 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
+# REQUIRED PACKAGES
+# ggplot2
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# fun_pack_import()
+# fun_gg_palette()
+# fun_round()
+# fun_2D_comp()
+# RETURN
+# a boxplot
+# 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 info coordinates
+# warnings: the warning messages. Use cat() for proper display. NULL if no warning
+# EXAMPLES
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = "white") # separate bars, modification of bar color 1 (a single value)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = c("red", "blue")) # separate bars, modification of bar color 2 (one value par class of categ2)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), bar.color = rep(c("brown", "orange"), time = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = obs1$bar.color) # separate bars, modification of bar color 3 (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "same") # separate bars, modification of dot color 1 (same dot color as the corresponding bar)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "green") # separate bars, modification of dot color 2 (single color for all the dots)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = c("green", "brown")) # separate bars, modification of dot color 3 (one value par class of categ2)
+# obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1))) # separate bars, modification of dot color 4 (any color for each dot)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2")) # grouped bars, default arguments
+# obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), return = TRUE) # more grouped bars
+# obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), ylog = TRUE) # grouped bars, log scale. Beware, y column must be log, otherwise incoherent scale
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL) # grouped bars, no dots
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = "white") # grouped bars, modification of bar color 1 (a single value)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = c("red", "blue")) # grouped bars, modification of bar color 2 (one value par class of categ2)
+# obs1 <- 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)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = obs1$bar.color) # grouped bars, modification of bar color 3 (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "same") # grouped bars, modification of dot color 1 (same dot color as the corresponding bar)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "green") # grouped bars, modification of dot color 2 (single color for all the dots)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = c("green", "brown")) # grouped bars, modification of dot color 3 (one value par class of categ2)
+# obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5), group2 = rep(c("A", "B"), each = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1))) # grouped bars, modification of dot color 4 (any color for each dot)
+# obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), class.order = list(NULL, c("B", "A")), legend.name = "", categ.color = c("red", "blue"), dot.color = "grey", error.bar = "SD", bar.width = 0.25, error.bar.width = 0.8, jitter = 1, ylim = c(10, 30), y.include.zero = FALSE, top.extra.margin = 0.5, bottom.extra.margin = 1, xlab = "GROUP", ylab = "MEAN", pt.size = 4, pt.border.size = 0, alpha = 1, show.stat = "above", stat.size = 4, title = "GRAPH1", text.size = 20, return = TRUE, break.nb = 10, classic = TRUE, grid = TRUE) # grouped bars, all the arguments
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 0.25) # width example. With bar.width = 0.25, three times more space between single bars than the bar width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 1) # width example. With bar.width = 1, no space between single bars
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 0.25) # width example. With bar.width = 0.25, three times more space between sets of grouped bars than the set width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 1) # width example. With bar.width = 0, no space between sets of grouped bars
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.bar = "SD", error.bar.width = 1) # width example. With error.bar.width = 1, whiskers have the width of the corresponding bar
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.bar = "SD", error.bar.width = 0) # width example. No whiskers
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", pt.size = 3, alpha = 1,  jitter = 1) # width example. With jitter = 1, dispersion around the corresponding bar width
+# obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", pt.size = 3, alpha = 1,  jitter = 0) # width example. No dispersion
+# DEBUGGING
+# data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; y = names(data1)[1] ; categ = names(data1)[2] ; class.order = list(L1 = NULL) ; legend.name = NULL ; categ.color = c("red", "blue") ; dot.color = "same" ; error.bar = "SEM.TOP" ; bar.width = 0.5 ; error.bar.width = 0.5 ; jitter = 0.25 ; ylim = NULL ; ylog = FALSE ; y.include.zero = FALSE ; top.extra.margin = 0.05 ; bottom.extra.margin = 0 ; xlab = NULL ; ylab = NULL ; pt.size = 3 ; pt.border.size = 0.1 ; alpha = 1 ; show.stat = NULL ; stat.size = 8 ; title = "GRAPH1" ; text.size = 12 ; return = FALSE ; break.nb = NULL ; classic = FALSE ; grid = FALSE ; path.lib = NULL
+# data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; class.order = list(L1 = NULL, L2 = c("B", "A")) ; legend.name = NULL ; categ.color = c("red", "blue") ; dot.color = "same" ; error.bar = "SEM.TOP" ; bar.width = 0.5 ; error.bar.width = 0.5 ; jitter = 0.25 ; ylim = NULL ; ylog = FALSE ; y.include.zero = FALSE ; top.extra.margin = 0.05 ; bottom.extra.margin = 0 ; xlab = NULL ; ylab = NULL ; pt.size = 3 ; pt.border.size = 0.1 ; alpha = 1 ; show.stat = NULL ; stat.size = 8 ; title = "GRAPH1" ; text.size = 12 ; return = FALSE ; break.nb = NULL ; classic = FALSE ; grid = FALSE ; path.lib = NULL
+# data1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; class.order = list(L1 = NULL, L2 = c("B", "A")) ; legend.name = NULL ; categ.color = NULL ; dot.color = "same" ; error.bar = NULL ; bar.width = 0.5 ; error.bar.width = 0.5 ; jitter = 0.25 ; ylim = NULL ; ylog = TRUE ; y.include.zero = FALSE ; top.extra.margin = 0.05 ; bottom.extra.margin = 0 ; xlab = NULL ; ylab = NULL ; pt.size = 3 ; pt.border.size = 0.1 ; alpha = 0.5 ; show.stat = NULL ; stat.size = 8 ; title = "" ; text.size = 12 ; return = FALSE ; break.nb = NULL ; classic = FALSE ; grid = FALSE ; 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)) ; y = names(data1)[1] ; categ = c(names(data1)[2], names(data1)[3]) ; class.order = list(L1 = NULL, L2 = c("B", "A")) ; legend.name = NULL ; categ.color = data1$bar.color ; dot.color = "same" ; error.bar = "SD" ; bar.width = 0.5 ; error.bar.width = 0.5 ; jitter = 0.25 ; ylim = NULL ; ylog = TRUE ; y.include.zero = FALSE ; top.extra.margin = 0.05 ; bottom.extra.margin = 0 ; xlab = NULL ; ylab = NULL ; pt.size = 3 ; pt.border.size = 0.1 ; alpha = 0.5 ; show.stat = NULL ; stat.size = 8 ; title = "" ; text.size = 12 ; return = FALSE ; break.nb = NULL ; classic = FALSE ; grid = FALSE ; 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]) ; class.order = list(L1 = NULL, L2 = c("B", "A")) ; legend.name = NULL ; categ.color = na.omit(data1)$bar.color ; dot.color = "same" ; error.bar = "SD" ; bar.width = 0.5 ; error.bar.width = 0.5 ; jitter = 0.25 ; ylim = NULL ; ylog = TRUE ; y.include.zero = FALSE ; top.extra.margin = 0.05 ; bottom.extra.margin = 0 ; xlab = NULL ; ylab = NULL ; pt.size = 3 ; pt.border.size = 0.1 ; alpha = 0.5 ; show.stat = "above" ; stat.size = 4 ; title = "" ; text.size = 12 ; return = FALSE ; break.nb = NULL ; classic = FALSE ; grid = FALSE ; path.lib = NULL
+# function name
+}
+
+
+
+
+######## 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
+
+
+
+
+
+
+######## 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 ?
+
+
+# Check OK: clear to go Apollo
+fun_gg_heatmap <- function(data1, legend.name = "", low.color = "blue", high.color = "red", mid.color = "white", limit = NULL, midpoint = NULL, title = "", text.size = 12, show.scale = TRUE, data2 = NULL, color2 = "black", alpha2 = 0.5, invert2 = FALSE, return = 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.name: character string of the heatmap scale legend
+# low.color: character string of the color (i.e., "blue" or "#0000FF") of the lowest scale value
+# high.color: same as low.color but for the highest scale value
+# mid.color: same as low.color but for the middle scale value
+# limit: 2 numeric values defining the lowest and higest color scale values. If NULL, take the range of data1 values
+# midpoint: single numeric value defining the middle color scale values. If NULL, take the mean of data1 values
+# title: character string of the graph title
+# text.size: numeric value of the text size (in points)
+# show.scale: logical. Show color scale?
+# 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)?
+# return: logical. Return the graph parameters?
+# 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_param_check()
+# fun_pack_import()
+# RETURN
+# a heatmap
+# the graph info if return argument is TRUE
+# 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.name = "VALUE", title = "GRAPH 1", text.size = 5, data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4), invert2 = FALSE, return = TRUE)
+# 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)))
+# DEBUGGING
+# data1 = matrix(1:16, ncol = 4) ; legend.name = "" ; low.color = "blue" ; high.color = "red" ; mid.color = "white" ; limit = range(data1, na.rm = TRUE) ; midpoint = mean(data1, na.rm = TRUE) ; title = "GRAPH 1" ; text.size = 12 ; show.scale = TRUE ; data2 = NULL ; color2 = "black" ; alpha2 = 0.5 ; invert2 = FALSE ; return = FALSE ; path.lib = NULL
+# data1 = matrix(1:16, ncol = 4) ; legend.name = "" ; low.color = "blue" ; high.color = "red" ; mid.color = "white" ; limit = range(data1, na.rm = TRUE) ; midpoint = mean(data1, na.rm = TRUE) ; title = "GRAPH 1" ; text.size = 12 ; show.scale = TRUE ; data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4) ; color2 = "black" ; alpha2 = 0.5 ; invert2 = FALSE ; return = 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() 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(all(is.matrix(data1))){
+tempo <- fun_param_check(data = data1, class = "matrix", mode = "numeric", fun.name = function.name) ; eval(ee)
+}else if(all(is.data.frame(data1))){
+tempo <- fun_param_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_param_check(data = data1[, 1], typeof = "integer", fun.name = function.name)
+tempo <- fun_param_check(data = data1[, 2], typeof = "integer", fun.name = function.name)
+tempo <- fun_param_check(data = data1[, 3], mode = "numeric", 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")
+stop(tempo.cat)
+}
+tempo <- fun_param_check(data = legend.name, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = low.color, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(low.color %in% colors() | grepl(pattern = "^#", low.color)))){ # check that all strings of low.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": low.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+stop(tempo.cat)
+}
+tempo <- fun_param_check(data = high.color, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(high.color %in% colors() | grepl(pattern = "^#", high.color)))){ # check that all strings of high.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": high.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+stop(tempo.cat)
+}
+tempo <- fun_param_check(data = mid.color, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! (all(mid.color %in% colors() | grepl(pattern = "^#", mid.color)))){ # check that all strings of mid.color start by #
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": mid.color ARGUMENT MUST BE A HEXADECIMAL COLOR VECTOR STARTING BY # AND/OR COLOR NAMES GIVEN BY colors()\n\n================\n\n")
+stop(tempo.cat)
+}
+if( ! is.null(limit)){
+tempo <- fun_param_check(data = limit, class = "vector", mode = "numeric", length = 2, fun.name = function.name) ; eval(ee)
+}
+if( ! is.null(midpoint)){
+tempo <- fun_param_check(data = midpoint, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = title, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = show.scale, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(data2)){
+if(all(is.matrix(data2))){
+tempo <- fun_param_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")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}
+}else if(all(is.data.frame(data2))){
+tempo <- fun_param_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_param_check(data = data2[, 1], typeof = "integer", fun.name = function.name)
+tempo <- fun_param_check(data = data2[, 2], typeof = "integer", fun.name = function.name)
+tempo <- fun_param_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")
+stop(tempo.cat)
+}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 AS DATA FRAME DIMENSION IN data1. HERE IT IS RESPECTIVELY:\n", paste(dim(data2), collapse = " "), "\n", paste(dim(data1), collapse = " "), "\n\n================\n\n")
+stop(tempo.cat)
+}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")
+stop(tempo.cat)
+}
+}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")
+stop(tempo.cat)
+}
+}
+tempo <- fun_param_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 mid.color 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")
+stop(tempo.cat)
+}
+tempo <- fun_param_check(data = alpha2, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = invert2, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = return, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_check()
+# end argument checking
+# package checking
+fun_pack_import(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(is.null(limit)){
+limit <- range(data1[, 3], na.rm = TRUE)
+}
+if(is.null(midpoint)){
+midpoint <- mean(data1[, 3], na.rm = TRUE)
+}
+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(invert2 == FALSE){
+data2[data2[, 3] == 1, 3] <- color2
+data2[data2[, 3] == 0, 3] <- NA
+}else{
+data2[data2[, 3] == 0, 3] <- color2
+data2[data2[, 3] == 1, 3] <- NA
+}
+}
+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(data = data1, mapping = ggplot2::aes_string(x = names(data1)[2], y = names(data1)[1], fill = names(data1)[3])))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_raster(show.legend = show.scale))
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::scale_fill_gradient2(low = low.color, high = high.color, mid = mid.color, midpoint = midpoint, limit = limit, breaks = c(limit, midpoint), name = legend.name))
+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)[2], y = names(data2)[1], group = names(data2)[3]), fill = data2[, 3], alpha = alpha2, show.legend = FALSE))
+}
+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))
+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(
+line = ggplot2::element_blank(),
+axis.title = ggplot2::element_blank(),
+axis.text = ggplot2::element_blank(),
+axis.ticks = ggplot2::element_blank(),
+panel.background = ggplot2::element_blank(),
+))
+suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+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(output)
+}
+}
+
+
+######## fun_gg_empty_graph() #### text to display for empty graphs
+
+
+# Check OK: clear to go Apollo
+fun_gg_empty_graph <- function(text, text.size = 12, title = NULL, 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
+# 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_param_check()
+# fun_pack_import()
+# RETURN
+# an empty plot
+# EXAMPLES
+# fun_gg_empty_graph(text = "NO GRAPH", title = "GRAPH1")
+# DEBUGGING
+# text = "NO GRAPH" ; text.size = 12 ; title = "GRAPH1" ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() 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_param_check(data = text, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = text.size, class = "vector", mode = "numeric", length = 1, fun.name = function.name) ; eval(ee)
+if( ! is.null(title)){
+tempo <- fun_param_check(data = title, 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_param_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_param_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_param_check()
+# end argument checking
+# package checking
+fun_pack_import(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())
+assign(paste0(tempo.gg.name, tempo.gg.count <- tempo.gg.count + 1), ggplot2::geom_text(data = data.frame(x = 1, y = 1), aes(x = x, y = y, label = text)))
+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())
+suppressWarnings(print(eval(parse(text = paste(paste0(tempo.gg.name, 1:tempo.gg.count), collapse = " + ")))))
+}
+
+
+################ Graphic extraction
+
+
+######## fun_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs
+
+
+# Check OK: clear to go Apollo
+fun_var_trim_display <- 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_param_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_var_trim_display(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_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")
+stop(tempo.cat)
+}
+}
+tempo <- fun_param_check(data = single.value.display, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = trim.method, options = c("", "mean.sd", "quantile"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = trim.cutoffs, class = "vector", mode = "numeric", length = 2, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = interval.scale.disp, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = down.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = left.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = up.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = right.space, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = orient, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = dist.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = box.type, options = c("o", "l", "7", "c", "u", "]", "n"), length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = amplif.label, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = amplif.axis, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = std.x.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = std.y.range, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = cex.pt, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = col.box, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_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_param_check(data = tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = sec.tick.length, class = "vector", mode = "numeric", length = 1, prop = TRUE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = corner.text, class = "character", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = amplif.legend, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = magnific.corner.text, class = "vector", mode = "numeric", length = 1, neg.values = FALSE, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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, xy.cross.kind = "&", graph.check = FALSE, graph.path = "C:/Users/Gael/Desktop/", 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
+# 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. 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)
+# 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
+# graph.check: logical. Print a pdf graph that check the frame?
+# graph.path: absolute path of the directory to print the pdf graph.check. Ignored if graph.check is FALSE
+# path.lib: absolute path of the required packages, if not in the default folders. Ignored if graph.check is FALSE
+# REQUIRED PACKAGES
+# ggplot2 if graph.check is TRUE
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# if graph.check is TRUE:
+# fun_pack_import()
+# fun_open_window()
+# fun_gg_palette()
+# fun_gg_scatter()
+# fun_gg_empty_graph()
+# fun_close_specif_window()
+# RETURN
+# a pdf plot if graph.check is TRUE
+# a list containing:
+# 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)
+# data2.signif.dot: the significant dots of data2 if non NULL (i.e., dots outside the frame)
+# warnings: warning messages
+# EXAMPLES
+# 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 = 23, y.step.factor = 10, error = 0, data2 = data2, x2 = names(data2)[1], y2 = names(data2)[2], xy.cross.kind = "|", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", 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], xy.cross.kind = "|", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", 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], xy.cross.kind = "&", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", path.lib = NULL)
+# DEBUGGING
+# set.seed(1) ; data1 = data.frame(x = rnorm(50), y = rnorm(50)) ; 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] ; xy.cross.kind = "|" ; graph.check = TRUE ; graph.path = "C:/Users/Gael/Desktop/" ; 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] ; xy.cross.kind = "|" ; graph.check = TRUE ; graph.path = "C:/Users/Gael/Desktop/" ; 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] ; xy.cross.kind = "&" ; graph.check = TRUE ; graph.path = "C:/Users/Gael/Desktop/" ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = data1, class = "data.frame", 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_param_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)
+}
+tempo <- fun_param_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)
+}
+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_param_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_param_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_param_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_param_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_param_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_param_check(data = data2, class = "data.frame", 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_param_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)
+}
+}
+if( ! is.null(y2)){
+tempo <- fun_param_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)
+}
+}
+}
+if( ! (is.null(x.range.split)) & ! (is.null(y.range.split))){
+tempo <- fun_param_check(data = xy.cross.kind, options = c("&", "|"), length = 1, fun.name = function.name) ; eval(ee)
+}
+tempo <- fun_param_check(data = graph.check, class = "vector", mode = "logical", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & graph.check == TRUE){
+tempo <- fun_param_check(data = graph.path, class = "vector", mode = "character", length = 1, fun.name = function.name) ; eval(ee)
+if(tempo$problem == FALSE & ! all(dir.exists(graph.path))){
+cat(paste0("\n\n============\n\nERROR IN ", function.name, ": \nDIRECTORY PATH INDICATED IN THE graph.path PARAMETER DOES NOT EXISTS: ", graph.path, "\n\n============\n\n"))
+arg.check <- c(arg.check, TRUE)
+}
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_check()
+# end argument checking
+# other required function checking
+if(graph.check == TRUE){
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_open_window", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_open_window() 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_specif_window", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_close_specif_window() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+}
+# end other required function checking
+# package checking
+if(graph.check == TRUE){
+fun_pack_import(req.package = c("ggplot2"), path.lib = path.lib)
+}
+# end package checking
+# main code
+warning <- NULL
+data1 <- data1[ ! duplicated(data1[, c(x1, y1)]), ] # remove the dots that have same x and y values
+data1 <- cbind(data1, DOT_NB = 1:nrow(data1))
+if( ! is.null(data2)){
+data2 <- data2[ ! duplicated(data2[, c(x2, y2)]), ] # remove the dots that have same x and y values
+data2 <- cbind(data2, DOT_NB = 1:nrow(data2))
+}
+# may be create vector of each column to increase speed
+# Method using x unit interval 
+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
+x.range <- range(data1[, x1], na.rm = TRUE)
+y.range <- range(data1[, y1], na.rm = TRUE)
+x.range.plot <- range(data1[, x1], na.rm = TRUE)
+y.range.plot <- range(data1[, y1], na.rm = TRUE)
+if( ! is.null(data2)){
+x.range.plot <- range(data1[, x1], data2[, x2], na.rm = TRUE)
+y.range.plot <- range(data1[, y1], data2[, y2], na.rm = TRUE)
+}
+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
+# recover data2 dots outside the range of data1
+if(any(data2[, x2] < x.range[1])){
+y.outside.data2.dot.nb <- c(y.outside.data2.dot.nb, data2$DOT_NB[data2[, x2] < x.range[1]])
+}
+if(any(data2[, x2] > x.range[2])){
+y.outside.data2.dot.nb <- c(y.outside.data2.dot.nb, data2$DOT_NB[data2[, x2] > x.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 <- 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
+tempo.warning <- paste0("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 NROWS 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.outside.data1.dot.nb.final <- y.outside.data1.dot.nb[ ! (y.outside.data1.dot.nb %in% y.inside.data1.dot.nb)] # if a row number of y.inside.data2.dot.nb is present in y.outside.data2.dot.nb, it means that during the sliding, a dot has been sometime inside, sometime outside -> removed
+y.outside.data2.dot.nb.final <- y.outside.data2.dot.nb[ ! (y.outside.data2.dot.nb %in% y.inside.data2.dot.nb)] # if a row number of y.inside.data2.dot.nb is present in y.outside.data2.dot.nb, it means that during the sliding, a dot has been sometime inside, sometime outside -> removed
+# 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
+# recover data2 dots outside the range of data1
+if(any(data2[, y2] < y.range[1])){
+x.outside.data2.dot.nb <- c(x.outside.data2.dot.nb, data2$DOT_NB[data2[, y2] < y.range[1]])
+}
+if(any(data2[, y2] > y.range[2])){
+x.outside.data2.dot.nb <- c(x.outside.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
+tempo.warning <- paste0("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 NROWS 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.outside.data1.dot.nb.final <- x.outside.data1.dot.nb[ ! (x.outside.data1.dot.nb %in% x.inside.data1.dot.nb)] # if a row number of x.inside.data2.dot.nb is present in x.outside.data2.dot.nb, it means that during the sliding, a dot has between sometime inside, sometime outside -> removed
+x.outside.data2.dot.nb.final <- x.outside.data2.dot.nb[ ! (x.outside.data2.dot.nb %in% x.inside.data2.dot.nb)] # if a row number of x.inside.data2.dot.nb is present in x.outside.data2.dot.nb, it means that during the sliding, a dot has between sometime inside, sometime outside -> removed
+# end y-axis sliding and x-axis limits of the data1 cloud -> x significant data2
+}
+# end Method using y unit interval 
+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"}
+)
+)
+data1.signif.dot <- NULL
+data2.signif.dot <- NULL
+if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
+if(xy.cross.kind == "|"){
+if(length(unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final))) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% unique(c(x.outside.data1.dot.nb.final, y.outside.data1.dot.nb.final)), ]
+}
+}else if(xy.cross.kind == "&"){
+if(sum(x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% x.outside.data1.dot.nb.final[x.outside.data1.dot.nb.final %in% y.outside.data1.dot.nb.final], ]
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR: CODE INCONSISTENCY\n\n============\n\n"))
+stop(tempo.cat)
+}
+if( ! is.null(data2)){
+if(xy.cross.kind == "|"){
+if(length(unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final))) > 0){
+data2.signif.dot <- data2[data2$DOT_NB %in% unique(c(x.outside.data2.dot.nb.final, y.outside.data2.dot.nb.final)), ]
+}
+}else if(xy.cross.kind == "&"){
+if(sum(x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final) > 0){
+data2.signif.dot <- data2[data2$DOT_NB %in% x.outside.data2.dot.nb.final[x.outside.data2.dot.nb.final %in% y.outside.data2.dot.nb.final], ]
+}
+}else{
+tempo.cat <- (paste0("\n\n============\n\nERROR: CODE INCONSISTENCY\n\n============\n\n"))
+stop(tempo.cat)
+}
+}
+}else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
+if(length(y.outside.data1.dot.nb.final) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% y.outside.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, ]
+}
+}
+}else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
+if(length(x.outside.data1.dot.nb.final) > 0){
+data1.signif.dot <- data1[data1$DOT_NB %in% x.outside.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(graph.check == TRUE){
+fun_open_window(pdf.disp = TRUE, path.fun = graph.path, pdf.name.file = "segmentation_graph")
+if(( ! is.null(x.range.split)) & ( ! is.null(y.range.split))){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, vframe), x = list(x1, "x", "x"), y = list(y1, "y", "y"), categ = list(NULL, "kind", "kind"), legend.name = list("data1", "hframe" , "vframe"), 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"), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+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(NULL, "kind", "kind", NULL), legend.name = list("data1", "hframe" , "vframe", "data1.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"), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA1 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2)){
+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(NULL, NULL, "kind", "kind"), legend.name = list("data1", "data2", "hframe" , "vframe"), 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"), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+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(NULL, NULL, NULL, "kind", "kind"), legend.name = list("data1", "data2", "data2.signif.dots", "hframe" , "vframe"), 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"), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA2 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+}
+}else if(( ! is.null(x.range.split)) & is.null(y.range.split)){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe), x = list(x1, "x"), y = list(y1, "y"), categ = list(NULL, "kind"), legend.name = list("data1", "hframe"), 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"), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, hframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list(NULL, "kind", NULL), legend.name = list("data1", "hframe", "data1.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"), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA1 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2)){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, hframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list(NULL, NULL, "kind"), legend.name = list("data1", "data2", "hframe"), 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"), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+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(NULL, NULL, NULL, "kind"), legend.name = list("data1", "data2", "data2.signif.dots", "hframe"), 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"), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA2 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+}
+}else if(is.null(x.range.split) & ( ! is.null(y.range.split))){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe), x = list(x1, "x"), y = list(y1, "y"), categ = list(NULL, "kind"), legend.name = list("data1", "vframe"), 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"), title = "DATA1", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, vframe, data1.signif.dot), x = list(x1, "x", x1), y = list(y1, "y", y1), categ = list(NULL, "kind", NULL), legend.name = list("data1", "vframe", "data1.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"), title = "DATA1 + DATA1 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA1 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA1 SIGNIFICANT DOTS")
+}
+if( ! is.null(data2)){
+tempo.graph <- fun_gg_scatter(data1 = list(data1, data2, vframe), x = list(x1, x2, "x"), y = list(y1, y2, "y"), categ = list(NULL, NULL, "kind"), legend.name = list("data1", "data2", "vframe"), 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"), title = "DATA1 + DATA2", xlim = x.range.plot, ylim = y.range.plot)
+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)){
+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(NULL, NULL, NULL, "kind"), legend.name = list("data1", "data2", "data2.signif.dots", "vframe"), 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"), title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS", xlim = x.range.plot, ylim = y.range.plot)
+if( ! is.null(tempo.graph$warnings)){
+warning <- paste0(ifelse(is.null(warning), tempo.graph$warnings, paste0(warning, "\n", tempo.graph$warnings)))
+}
+}else{
+fun_gg_empty_graph(text = "NO PLOT BECAUSE NO DATA2 DOTS OUTSIDE THE LIMITS", text.size = 12, title = "DATA1 + DATA2 + DATA2 SIGNIFICANT DOTS")
+}
+}
+}
+fun_close_specif_window()
+}
+tempo.list <- list(hframe = hframe, vframe = vframe, data1.signif.dot = data1.signif.dot, data2.signif.dot = data2.signif.dot, warnings = warning)
+return(tempo.list)
+}
+
+
+################ Import
+
+
+######## fun_pack_import() #### Check if R packages are present and import into the working environment
+
+
+# Check OK: clear to go Apollo
+fun_pack_import <- function(req.package, 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
+# 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_param_check()
+# RETURN
+# nothing
+# EXAMPLES
+# fun_pack_import(req.package = "nopackage")
+# fun_pack_import(req.package = "ggplot2")
+# fun_pack_import(req.package = "ggplot2", path.lib = "blablabla")
+# DEBUGGING
+# req.package = "ggplot2" ; path.lib = "C:/Program Files/R/R-3.5.1/library"
+# function name
+function.name <- paste0(as.list(match.call(expand.dots=FALSE))[[1]], "()")
+# end function name
+# required function checking
+if(length(find("fun_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_check(data = req.package, class = "character", fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_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{
+suppressWarnings(suppressPackageStartupMessages(library(req.package[i0], lib.loc = path.lib, quietly = TRUE, character.only = TRUE)))
+}
+}
+}
+
+
+######## fun_python_pack_import() #### Check if python packages are present
+
+
+# Check OK: clear to go Apollo
+fun_python_pack_import <- 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
+# R.path.lib: absolute path of the required packages, if not in the default folders
+# REQUIRED PACKAGES
+# reticulate
+# REQUIRED FUNCTIONS FROM CUTE_LITTLE_R_FUNCTION
+# fun_param_check()
+# fun_pack_import()
+# RETURN
+# nothing
+# EXAMPLES
+# fun_python_pack_import(req.package = "nopackage")
+# fun_python_pack_import(req.package = "serpentine")
+# fun_python_pack_import(req.package = "serpentine", path.lib = "blablabla")
+# DEBUGGING
+# req.package = "serpentine" ; path.lib = "C:/Program Files/R/R-3.5.1/library" ; 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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_check() FUNCTION IS MISSING IN THE R ENVIRONMENT\n\n================\n\n")
+stop(tempo.cat)
+}
+if(length(find("fun_pack_import", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_pack_import() 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_param_check(data = req.package, class = "character", fun.name = function.name) ; eval(ee)
+if( ! is.null(path.lib)){
+tempo <- fun_param_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_param_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_param_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_param_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_param_check()
+# end argument checking
+# package checking
+fun_pack_import(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]] <- try(suppressWarnings(reticulate::import_from_path(req.package[i0], path = path.lib[i1])), silent = TRUE)
+}
+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{
+assign(req.package[i0], reticulate::import(req.package[i0]))
+}
+}
+}
+
+
+################ Exporting results (text & tables)
+
+
+######## fun_export_data() #### Print string or data object into output file
+
+
+# Check OK: clear to go Apollo
+fun_export_data <- 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_param_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_export_data()
+# fun_export_data(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_param_check", mode = "function")) == 0){
+tempo.cat <- paste0("\n\n================\n\nERROR IN ", function.name, ": REQUIRED fun_param_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_param_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_param_check()
+# argument checking with fun_param_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_param_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")
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_param_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")
+arg.check <- c(arg.check, TRUE)
+}
+tempo <- fun_param_check(data = no.overwrite, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = rownames.kept, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = vector.cat, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_check(data = noquote, class = "logical", length = 1, fun.name = function.name) ; eval(ee)
+tempo <- fun_param_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_param_check()
+}
+# end argument checking with fun_param_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_param_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_param_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 (beacause 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 9893a2ad6306192320f90458c183c782517c6436..20fee7f01dcd2fd13b0b300902a80ffc5086df52 100644
GIT binary patch
literal 548896
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%0DVL}PP0~l>a@}n~Rqc^IRkfSCa_u3{0r`1!cmIph
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

delta 219030
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%0Ah5z|*d-FnXh
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%0Dy?)4?C%HWtSsg+d2
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

diff --git a/examples_alone.txt b/examples_alone.txt
index 8c32bc9..5364f56 100644
--- a/examples_alone.txt
+++ b/examples_alone.txt
@@ -1,12 +1,24 @@
-# COMPILATION OF THE EXAMPLES PRESENTS IN cute_little_R_functions.R
+################ COMPILATION OF THE EXAMPLES PRESENTS IN cute_little_R_functions.R ################
+
+######## fun_param_check()
 
 test <- 1:3 ; fun_param_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_param_check(data = test, print = TRUE, class = "numeric", typeof = NULL, double.as.integer.allowed = FALSE)
+test <- 1:3 ; fun_param_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+test <- matrix(1:3) ; fun_param_check(data = test, print = TRUE, class = "vector", mode = "numeric")
+
+
+
+######## fun_object_info()
 
 fun_object_info(data = 1:3)
- fun_object_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
+fun_object_info(data.frame(a = 1:2, b = ordered(factor(c("A", "B")))))
 fun_object_info(list(a = 1:3, b = ordered(factor(c("A", "B")))))
 
+
+
+######## fun_1D_comp()
+
 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)
@@ -18,45 +30,91 @@ 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)
 
+
+
+######## fun_2D_comp()
+
 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)
 
+
+
+######## fun_2D_head()
+
 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, "r")
 
+
+
+######## fun_2D_tail()
+
 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")
 
+
+
+######## fun_list_comp()
+
 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)
 
+
+
+######## fun_dataframe_remodeling()
+
 obs <- data.frame(col1 = (1:4)*10, col2 = c("A", "B", "A", "A")) ; obs ; fun_dataframe_remodeling(obs)
 obs <- data.frame(col1 = (1:4)*10, col2 = 5:8) ; obs ; fun_dataframe_remodeling(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_dataframe_remodeling(obs, quanti.col.name = "quanti", quali.col.name = "quali")
 
+
+
+######## fun_refactorization()
+
 obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, FALSE)
 obs <- data.frame(a = LETTERS[1:6], b = paste0(letters[1.6], c(1,1,2,2,3,3)), c = ordered(LETTERS[7:12]), d = 1:6, e = "A")[-c(1:2),] ; sapply(obs, levels) ; fun_refactorization(obs, TRUE)
 obs <- factor(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
 obs <- ordered(LETTERS[1:6])[-c(1:2)] ; obs ; fun_refactorization(obs, TRUE)
 obs <- factor(LETTERS[1:6], levels = rev(LETTERS[1:6]))[-c(1:2)] ; obs ; fun_refactorization(obs, FALSE)
 
-cat(fun_rounding(data = c(10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE))
-cat(fun_rounding(data = c("10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE))
+
+
+######## fun_round()
+
+cat(fun_round(data = c(10, 100.001, 333.0001254, 12312.1235), dec.nb = 2, after.lead.zero = FALSE), "\n\n")
+cat(fun_round(data = c("10", "100.001", "333un_var_trim_display().0001254", "12312.1235"), dec.nb = 2, after.lead.zero = FALSE), "\n\n")
+cat(fun_round(data = c("10", "100.001", "333.0001254", "12312.1235"), dec.nb = 2, after.lead.zero = TRUE), "\n\n")
+
+
+
+######## fun_90clock_matrix_rot()
 
 obs <- matrix(1:10, ncol = 1) ; obs ; fun_90clock_matrix_rot(obs)
 obs <- matrix(LETTERS[1:10], ncol = 5) ; obs ; fun_90clock_matrix_rot(obs)
 
-mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]) ; fun_hexa_hsv_color_matrix(mat1, mat.hsv.h = FALSE, notch = 1, s = 1, v = 1, forced.color = NULL)
+
+
+
+######## fun_num2color_mat()
+
+mat1 = matrix(c(1,1,1,2,1,5,9,NA), ncol = 2) ; dimnames(mat1) <- list(LETTERS[1:4], letters[1:2]) ; fun_num2color_mat(mat1, mat.hsv.h = FALSE, notch = 1, s = 1, v = 1, forced.color = NULL)
+
+
+
+######## fun_by_case_matrix_op()
 
 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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_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_by_case_matrix_op(mat.list = list(mat1, mat2, mat3), kind.of.operation = "+")
 
+
+
+######## fun_mat_inv()
+
 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)
@@ -65,25 +123,171 @@ 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)
 
+
+
+######## fun_mat_fill()
+
+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, warning.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, warning.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, warning.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", warning.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, warning.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, warning.print = TRUE) # error example
+
+
+
+######## fun_consec_pos_perm()
+
+fun_consec_pos_perm(data1 = LETTERS[1:5], data2 = NULL, n = 20, seed = 1, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2)
+fun_consec_pos_perm(data1 = 101:110, data2 = 21:30, n = 20, seed = 1, count.print = 10, text.print = "", cor.method = "spearman", cor.limit = 0.2)
+
+
+
+######## fun_window_width_resizing()
+
 fun_window_width_resizing(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)
 
+
+
+######## fun_open_window()
+
 fun_open_window(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)
 
-fun_graph_param_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)
+
+
+######## fun_prior_plot()
+
+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)
+
+
+
+######## fun_post_plot()
+
 # Example of log axis with log y-axis and unmodified x-axis:
-prior.par <- fun_graph_param_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_feature_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)
+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_graph_param_prior_plot(param.reinitial = TRUE) ; plot(1:100) ; fun_feature_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)
+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) ; 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_feature_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))
- 
+windows(5,5) ; 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))
+
+
+
+######## fun_close_specif_window()
+
 windows() ; windows() ; pdf() ; dev.list() ; fun_close_specif_window(kind = c("pdf", "x11"), return.text = TRUE) ; dev.list()
 
-fun_var_trim_display(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, text.corner = "", amplif.legend = 1, magnific.text.corner = 0.75, trim.return = TRUE)
 
-fun_export_data()
-fun_export_data(data = 1:3, output = "results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, sep = 2)
 
+######## fun_empty_graph()
+
+fun_empty_graph(text = "NO GRAPH", title = "GRAPH1")
+
+
+
+######## fun_gg_palette()
+
+fun_gg_palette(n = 2)
+plot(1, pch = 16, cex = 5, col = fun_gg_palette(n = 2)[2]) # second color of the two color ggplot2 palette
+
+
+
+######## fun_gg_scatter()
+
+obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = list(L1 = names(obs1)[3]), legend.name = NULL, color = NULL, geom = list(L1 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = FALSE, classic = FALSE)
+obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = NULL, legend.name = NULL, geom = list(L1 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = "test_x", ylab = "test_y", color = list(L1 = 5), pt.size = 2, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 15, return = TRUE, classic = FALSE)
+obs1 <- data.frame(a = 1:6, b = (1:6)^2, group = c("A", "A", "A", "B", "B", "B")) ; obs1 ; fun_gg_scatter(data1 = list(L1 = obs1), x = list(L1 = names(obs1)[1]), y = list(L1 = names(obs1)[2]), categ = NULL, legend.name = NULL, geom = list(L1 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = "test_x", ylab = "test_y", color = list(L1 = 5), pt.size = 2, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 15, return = TRUE, classic = FALSE)
+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"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3]), legend.name = list(L1 = "GROUP1", L2 = "GROUP2"), color = list(L1 = fun_gg_palette(4)[1:2], L2 = fun_gg_palette(4)[3:4]), geom = list(L1 = "geom_point", L2 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 2, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = fun_gg_palette(7)[1:2], L2 = fun_gg_palette(7)[3:4], L3 = fun_gg_palette(7)[5:7]), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], NULL), legend.name = NULL, color = list(L1 = fun_gg_palette(7)[1:2], L2 = fun_gg_palette(7)[3:4], L3 = NULL), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_path"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = NULL), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = "red", L2 = "blue", L3 = "green"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_vline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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 ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = NULL), categ = list(L1 = names(data1$L1)[3], L2 = names(data1$L2)[3], L3 = names(data1$L3)[3]), legend.name = NULL, color = list(L1 = "red", L2 = "blue", L3 = "green"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_vline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 4, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = FALSE, 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("A2", "A2", "A3", "A3", "B1", "B1"))) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1], L2 = names(data1$L2)[1], L3 = names(data1$L3)[1]), y = list(L1 = names(data1$L1)[2], L2 = names(data1$L2)[2], L3 = names(data1$L3)[2]), categ = NULL, legend.name = list(L1 = "A", L2 = "B", L3 = "C"), color = list(L1 = "black", L2 = 2, L3 = "purple"), geom = list(L1 = "geom_point", L2 = "geom_point", L3 = "geom_point"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 1, title = "GRAPH1", text.size = 20, return = TRUE, classic = TRUE, path.lib = NULL)
+data1 <- list(L1 = data.frame(a = 1:6, b = (1:6)^2, group = c("A1", "A2", "A3", "B1", "B2", "B3"))) ; data1$L1$a[2:3] <- NA ; x = list(L1 = names(data1$L1)[1]) ; y = list(L1 = NULL) ; categ = list(L1 = names(data1$L1)[3]) ; data1 ; fun_gg_scatter(data1 = data1, x = list(L1 = names(data1$L1)[1]), y = list(L1 = NULL), categ = list(L1 = names(data1$L1)[3]), legend.name = list(L1 = "VALUE"), color = list(L1 = "red"), geom = list(L1 = "geom_hline"), xlim = NULL, ylim = NULL, extra.margin = 0.05, xlab = NULL, ylab = NULL, pt.size = 1, li.size = 0.5, alpha = 0.5, title = "GRAPH1", text.size = 12, return = TRUE, classic = TRUE, path.lib = NULL)
+
+
+
+######## fun_gg_bar_mean()
+
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = "white") # separate bars, modification of bar color 1 (a single value)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = c("red", "blue")) # separate bars, modification of bar color 2 (one value par class of categ2)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), bar.color = rep(c("brown", "orange"), time = 10)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", categ.color = obs1$bar.color) # separate bars, modification of bar color 3 (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "same") # separate bars, modification of dot color 1 (same dot color as the corresponding bar)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = "green") # separate bars, modification of dot color 2 (single color for all the dots)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = c("green", "brown")) # separate bars, modification of dot color 3 (one value par class of categ2)
+obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1))) # separate bars, modification of dot color 4 (any color for each dot)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2")) # grouped bars, default arguments
+obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), return = TRUE) # more grouped bars
+obs1 <- data.frame(a = 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 = "a", categ = c("group1", "group2"), ylog = TRUE) # grouped bars, log scale. Beware, y column must be log, otherwise incoherent scale
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL) # grouped bars, no dots
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = "white") # grouped bars, modification of bar color 1 (a single value)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = c("red", "blue")) # grouped bars, modification of bar color 2 (one value par class of categ2)
+obs1 <- 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)) ; obs1 ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), categ.color = obs1$bar.color) # grouped bars, modification of bar color 3 (one value per line of obs1, with respect of the correspondence between categ2 and bar.color columns)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "same") # grouped bars, modification of dot color 1 (same dot color as the corresponding bar)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "green") # grouped bars, modification of dot color 2 (single color for all the dots)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = c("green", "brown")) # grouped bars, modification of dot color 3 (one value par class of categ2)
+obs1 <- data.frame(a = 1:10, group1 = rep(c("G", "H"), times = 5), group2 = rep(c("A", "B"), each = 5)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = hsv(h = (1:nrow(obs1)) / nrow(obs1))) # grouped bars, modification of dot color 4 (any color for each dot)
+obs1 <- data.frame(a = 1:20, group1 = rep(c("G", "H"), times = 10), group2 = rep(c("A", "B"), each = 10)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), class.order = list(NULL, c("B", "A")), legend.name = "", categ.color = c("red", "blue"), dot.color = "grey", error.bar = "SD", bar.width = 0.25, error.bar.width = 0.8, jitter = 1, ylim = c(10, 30), y.include.zero = FALSE, top.extra.margin = 0.5, bottom.extra.margin = 1, xlab = "GROUP", ylab = "MEAN", pt.size = 4, pt.border.size = 0, alpha = 1, show.stat = "above", stat.size = 4, title = "GRAPH1", text.size = 20, return = TRUE, break.nb = 10, classic = TRUE, grid = TRUE) # grouped bars, all the argumentsobs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 0.25) # width example. With bar.width = 0.25, three times more space between single bars than the bar width
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = "group1", dot.color = NULL, bar.width = 1) # width example. With bar.width = 1, no space between single bars
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 0.25) # width example. With bar.width = 0.25, three times more space between sets of grouped bars than the set width
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, bar.width = 1) # width example. With bar.width = 0, no space between sets of grouped bars
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.bar = "SD", error.bar.width = 1) # width example. With error.bar.width = 1, whiskers have the width of the corresponding bar
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = NULL, error.bar = "SD", error.bar.width = 0) # width example. No whiskers
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", pt.size = 3, alpha = 1,  jitter = 1) # width example. With jitter = 1, dispersion around the corresponding bar width
+obs1 <- data.frame(a = 1:1000, group1 = rep(c("G", "H"), times = 500), group2 = rep(LETTERS[1:5], each = 200)) ; fun_gg_bar_mean(data1 = obs1, y = "a", categ = c("group1", "group2"), dot.color = "grey", pt.size = 3, alpha = 1,  jitter = 0) # width example. No dispersion
+
+
+
+######## fun_gg_heatmap()
+
+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.name = "VALUE", title = "GRAPH 1", text.size  = 5, data2 = matrix(rep(c(1,0,0,0), 4), ncol = 4), invert2 = FALSE, return = TRUE)
+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)))
+
+
+
+######## fun_gg_empty_graph()
+
+fun_gg_empty_graph(text = "NO GRAPH", title = "GRAPH1")
+
+
+
+######## fun_var_trim_display()
+
+fun_var_trim_display(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)
+
+
+
+######## fun_segmentation()
+
+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 = 23, y.step.factor = 10, error = 0, data2 = data2,  x2 = names(data2)[1], y2 = names(data2)[2], xy.cross.kind = "|", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", 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], xy.cross.kind = "|", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", 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], xy.cross.kind = "&", graph.check = TRUE, graph.path = "C:/Users/Gael/Desktop/", path.lib = NULL)
+
+
+
+######## fun_pack_import()
+
+fun_pack_import(req.package = "nopackage")
+fun_pack_import(req.package = "ggplot2")
+fun_pack_import(req.package = "ggplot2", path.lib = "blablabla")
+
+
+
+######## fun_python_pack_import()
+
+fun_python_pack_import(req.package = "nopackage")
+fun_python_pack_import(req.package = "serpentine")
+fun_python_pack_import(req.package = "serpentine", path.lib = "blablabla")
+
+
+
+######## fun_export_data()
+
+fun_export_data()
+fun_export_data(data = 1:3, output = "results.txt", path = "C:/Users/Gael/Desktop", no.overwrite = TRUE, rownames.kept = FALSE, vector.cat = FALSE, noquote = FALSE, sep = 2)
 
 
 
-- 
GitLab