From a421b8b528b7069f45789ad2aaeb4c591e5af7e8 Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Fri, 1 Feb 2019 17:20:37 +0100 Subject: [PATCH 1/2] Updated MergeArrayDims. --- R/NcReadDims.R | 3 +-- R/Utils.R | 11 ++++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/R/NcReadDims.R b/R/NcReadDims.R index 660b4ef..5d2d87c 100644 --- a/R/NcReadDims.R +++ b/R/NcReadDims.R @@ -52,8 +52,7 @@ NcReadDims <- function(file_to_read, var_names = NULL) { new_dim <- c(var = 1) found_dims <- c(new_dim, found_dims) if (!is.null(dims)) { - dims <- .MergeArrayDims(dims, found_dims) - dims <- pmax(dims[[1]], dims[[2]]) + dims <- .MergeArrayDims(dims, found_dims)[[3]] dims['var'] <- dims['var'] + 1 } else { dims <- found_dims diff --git a/R/Utils.R b/R/Utils.R index cc9b059..e686019 100644 --- a/R/Utils.R +++ b/R/Utils.R @@ -131,9 +131,15 @@ # It expects as inputs two named numeric vectors, and it extends them # with dimensions of length 1 until an ordered common dimension # format is reached. +# The first output is dims1 extended with 1s. +# The second output is dims2 extended with 1s. +# The third output is a merged dimension vector. If dimensions with +# the same name are found in the two inputs, and they have a different +# length, the maximum is taken. .MergeArrayDims <- function(dims1, dims2) { new_dims1 <- c() new_dims2 <- c() + new_dims3 <- c() while (length(dims1) > 0) { if (names(dims1)[1] %in% names(dims2)) { pos <- which(names(dims2) == names(dims1)[1]) @@ -143,11 +149,13 @@ } new_dims1 <- c(new_dims1, dims_to_add, dims1[1]) new_dims2 <- c(new_dims2, dims2[1:pos]) + new_dims3 <- c(new_dims3, dims2[1:pos]) dims1 <- dims1[-1] dims2 <- dims2[-c(1:pos)] } else { new_dims1 <- c(new_dims1, dims1[1]) new_dims2 <- c(new_dims2, 1) + new_dims3 <- c(new_dims3, dims1[1]) names(new_dims2)[length(new_dims2)] <- names(dims1)[1] dims1 <- dims1[-1] } @@ -157,8 +165,9 @@ names(dims_to_add) <- names(dims2) new_dims1 <- c(new_dims1, dims_to_add) new_dims2 <- c(new_dims2, dims2) + new_dims3 <- c(new_dims3, dims2) } - list(new_dims1, new_dims2) + list(new_dims1, new_dims2, pmax(new_dims1, new_dims2)) } # This function takes two named arrays and merges them, filling with -- GitLab From d82914045c11e23ed604312e4433605181974571 Mon Sep 17 00:00:00 2001 From: Nicolau Manubens Date: Fri, 1 Feb 2019 17:29:03 +0100 Subject: [PATCH 2/2] Small fix. --- R/Utils.R | 4 ---- 1 file changed, 4 deletions(-) diff --git a/R/Utils.R b/R/Utils.R index e686019..fde2c95 100644 --- a/R/Utils.R +++ b/R/Utils.R @@ -139,7 +139,6 @@ .MergeArrayDims <- function(dims1, dims2) { new_dims1 <- c() new_dims2 <- c() - new_dims3 <- c() while (length(dims1) > 0) { if (names(dims1)[1] %in% names(dims2)) { pos <- which(names(dims2) == names(dims1)[1]) @@ -149,13 +148,11 @@ } new_dims1 <- c(new_dims1, dims_to_add, dims1[1]) new_dims2 <- c(new_dims2, dims2[1:pos]) - new_dims3 <- c(new_dims3, dims2[1:pos]) dims1 <- dims1[-1] dims2 <- dims2[-c(1:pos)] } else { new_dims1 <- c(new_dims1, dims1[1]) new_dims2 <- c(new_dims2, 1) - new_dims3 <- c(new_dims3, dims1[1]) names(new_dims2)[length(new_dims2)] <- names(dims1)[1] dims1 <- dims1[-1] } @@ -165,7 +162,6 @@ names(dims_to_add) <- names(dims2) new_dims1 <- c(new_dims1, dims_to_add) new_dims2 <- c(new_dims2, dims2) - new_dims3 <- c(new_dims3, dims2) } list(new_dims1, new_dims2, pmax(new_dims1, new_dims2)) } -- GitLab