From e2ba0b9fb2cfecdb7d903183251aa43502c3abcb Mon Sep 17 00:00:00 2001 From: vagudets Date: Tue, 19 Mar 2024 11:08:05 +0100 Subject: [PATCH] Change calls to match() to match by dimname instead of dimension length --- R/CDORemap.R | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/R/CDORemap.R b/R/CDORemap.R index a95f6ec..0933d11 100644 --- a/R/CDORemap.R +++ b/R/CDORemap.R @@ -966,12 +966,13 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, test_dims <- dim(ncvar_get(ncdf_remapped, 'var', collapse_degen = FALSE)) test_dims <- test_dims[which(test_dims > 1)] - pos_test_dims <- match(dim(result_array), test_dims) + pos_test_dims <- match(names(dim(result_array)), + names(test_dims)) if (is.unsorted(pos_test_dims, na.rm = TRUE)) { # pos_new_dims is used later in the code. Don't overwrite pos_new_dims <- seq_along(dim(result_array)) pos_new_dims[which(!is.na(pos_test_dims))] <- - match(test_dims, dim(result_array)) + match(names(test_dims), names(dim(result_array))) backup_result_array_dims <- dim(result_array) dim(result_array) <- dim(result_array)[pos_new_dims] } @@ -1003,7 +1004,8 @@ CDORemap <- function(data_array = NULL, lons, lats, grid, method, if (is_irregular & (!is.null(dims_to_iterate))) { if (exists('pos_new_dims')) { pos_new_dims <- seq_along(dim(result_array)) - dims_to_change <- match(backup_result_array_dims, dim(result_array)) + dims_to_change <- match(names(backup_result_array_dims), + names(dim(result_array))) pos_new_dims[which(dims_to_change != 1)] <- dims_to_change[which(dims_to_change != 1)] result_array <- .aperm2(result_array, pos_new_dims) -- GitLab