diff --git a/README.md b/README.md
index 485e2e27203ebabaedff971aec794a0ba2e692ea..80d23d98bb36e245cabf2ea082df6f72fd1bddda 100644
--- a/README.md
+++ b/README.md
@@ -43,11 +43,16 @@ examples_alone.txt	compile all the examples of each of the 16 functions into a s
 
 #### WEB LOCATION
 
-Check for updated versions (more recent release tags) at https://gitlab.pasteur.fr/gmillot/cute_little_functions
+Check for updated versions (more recent release tags) at https://gitlab.pasteur.fr/gmillot/cute_little_functions/tags
 
 
 #### WHAT'S NEW IN
 
+## v4.2.0
+
+1) bug in the fun_2D_comp() function fixed
+
+
 ## v4.1.0
 
 1) text.corner replaced by corner.text everywhere
diff --git a/cute_little_R_functions.R b/cute_little_R_functions.R
index 805fb24fa658d2f16ef6966b785f77123c43cc69..731a973d5f5cf97f6a9f7d1e48d2e37c70d9009e 100644
--- a/cute_little_R_functions.R
+++ b/cute_little_R_functions.R
@@ -1,6 +1,6 @@
 ################################################################
 ##                                                            ##
-##     CUTE LITTLE R FUNCTIONS v4.1.0                         ##
+##     CUTE LITTLE R FUNCTIONS v4.2.0                         ##
 ##                                                            ##
 ##     Gael A. Millot                                         ##
 ##                                                            ##
@@ -15,27 +15,27 @@
 ################################ 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.)   11
-######## fun_list_comp() #### comparison of two lists   16
-################ Object modification    18
-######## fun_dataframe_remodeling() #### remodeling a data frame to have column name as a qualitative column and vice-versa 18
-######## fun_refactorization() #### remove classes that are not anymore present in factors or factor columns in data frames 21
-######## fun_rounding() #### Rounding number if decimal present 23
-######## fun_90clock_matrix_rot() #### 90° clockwise matrix rotation    24
-######## fun_hexa_hsv_color_matrix() #### Conversion of a numeric matrix into hexadecimal color matrix  25
-################ Graphics   28
-######## fun_window_width_resizing() #### window width depending on classes to plot 28
-######## fun_open_window() #### Open a GUI or pdf graphic window    29
-######## fun_graph_param_prior_plot() #### Graph param before plotting  32
-######## fun_feature_post_plot() #### Graph param after plotting    35
-######## fun_close_specif_window() #### Closing specific graphic windows    43
-######## fun_quant_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs   45
-################ Exporting results (text & tables)  52
-######## fun_export_data() #### Print string or data object into output file    52
+################ 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.)	11
+######## fun_list_comp() #### comparison of two lists	16
+################ Object modification	18
+######## fun_dataframe_remodeling() #### remodeling a data frame to have column name as a qualitative column and vice-versa	18
+######## fun_refactorization() #### remove classes that are not anymore present in factors or factor columns in data frames	21
+######## fun_rounding() #### Rounding number if decimal present	23
+######## fun_90clock_matrix_rot() #### 90° clockwise matrix rotation	24
+######## fun_hexa_hsv_color_matrix() #### Conversion of a numeric matrix into hexadecimal color matrix	25
+################ Graphics	28
+######## fun_window_width_resizing() #### window width depending on classes to plot	28
+######## fun_open_window() #### Open a GUI or pdf graphic window	29
+######## fun_graph_param_prior_plot() #### Graph param before plotting	32
+######## fun_feature_post_plot() #### Graph param after plotting	35
+######## fun_close_specif_window() #### Closing specific graphic windows	43
+######## fun_quant_var_trim_display() #### Display values from a quantitative variable and trim according to defined cut-offs	45
+################ Exporting results (text & tables)	52
+######## fun_export_data() #### Print string or data object into output file	52
 
 
 ################################ FUNCTIONS ################################
@@ -604,11 +604,13 @@ fun_2D_comp <- function(data1, data2){
     # $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
@@ -671,13 +673,13 @@ fun_2D_comp <- function(data1, data2){
         any.id.row.name <- TRUE
         same.row.name.pos1 <- 1:row.nb
         same.row.name.pos2 <- 1:row.nb
-        common.row.names <- dimnames(mat1)[[1]]
+        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(mat1)[[2]]
+        common.col.names <- dimnames(data1)[[2]]
         any.id.row <- TRUE
         same.row.pos1 <- 1:row.nb
         same.row.pos2 <- 1:row.nb
@@ -842,6 +844,8 @@ fun_2D_comp <- function(data1, data2){
         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
diff --git a/cute_little_R_functions.docx b/cute_little_R_functions.docx
index e532168aa20693677be50ab8e1c95468ace06d99..aa3bdebee1868349e154634230f435dca89c95f4 100644
Binary files a/cute_little_R_functions.docx and b/cute_little_R_functions.docx differ
diff --git a/examples_alone.txt b/examples_alone.txt
index f62689110f306caf07266fc4c5dfb484c014b56a..1cdc0556ac4700d92840a5775f28fc676d87035c 100644
--- a/examples_alone.txt
+++ b/examples_alone.txt
@@ -17,6 +17,7 @@ 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)
 
 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)