From 85cf2bd6a707615125ab5a0a69c962fc37ea6f2c Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 1 Oct 2020 16:56:59 +0200 Subject: [PATCH 1/2] Bugfix for per-paired when NA existence. --- R/Clim.R | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/R/Clim.R b/R/Clim.R index 8445e462..cc934e21 100644 --- a/R/Clim.R +++ b/R/Clim.R @@ -70,11 +70,9 @@ Clim <- function(var_exp, var_obs, memb = TRUE, kharin = FALSE, NDV = FALSE) { # Find common points to compute climatologies # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # - tmp <- MeanListDim(var_obs, dims = 5:7, narm = TRUE) - tmp2 <- MeanListDim(var_exp, dims = 5:7, narm = TRUE) - nan <- MeanListDim(tmp, dims = 1:2, narm = FALSE) + Mean1Dim(Mean1Dim(tmp2, 2, - narm = TRUE), - 1, narm = FALSE) + nan <- MeanListDim(var_exp, dims = c(1:2, 5:7), narm = FALSE) + + MeanListDim(var_obs, dims = c(1:2, 5:7), narm = FALSE) + for (jdate in 1:dimexp[3]) { for (jtime in 1:dimexp[4]) { if (is.na(nan[jdate, jtime])) { -- GitLab From 749ba229c9040d3586e07acb2bc8ab3436ee61de Mon Sep 17 00:00:00 2001 From: aho Date: Mon, 5 Oct 2020 12:28:58 +0200 Subject: [PATCH 2/2] Revise the NA exclusion rule. each lon/lat/lev is independent --- R/Clim.R | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/R/Clim.R b/R/Clim.R index cc934e21..a60106a3 100644 --- a/R/Clim.R +++ b/R/Clim.R @@ -70,17 +70,49 @@ Clim <- function(var_exp, var_obs, memb = TRUE, kharin = FALSE, NDV = FALSE) { # Find common points to compute climatologies # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # - nan <- MeanListDim(var_exp, dims = c(1:2, 5:7), narm = FALSE) + - MeanListDim(var_obs, dims = c(1:2, 5:7), narm = FALSE) - for (jdate in 1:dimexp[3]) { - for (jtime in 1:dimexp[4]) { - if (is.na(nan[jdate, jtime])) { - var_exp[, , jdate, jtime, , , ] <- NA - var_obs[, , jdate, jtime, , , ] <- NA - } + na_array <- array(0, dim = dim(var_exp)[3:7]) + + for (i_dat in 1:dimexp[1]) { + for (i_memb in 1:dimexp[2]) { + na_array <- na_array + as.numeric(is.na(var_exp[i_dat, i_memb, , , , , ])) + } + } + for (i_dat in 1:dimobs[1]) { + for (i_memb in 1:dimobs[2]) { + na_array <- na_array + as.numeric(is.na(var_obs[i_dat, i_memb, , , , , ])) + } + } + na_array <- as.logical(na_array) # TRUE is NA, FALSE is not + + for (i_dat in 1:dimexp[1]) { + for (i_memb in 1:dimexp[2]) { + asd <- var_exp[i_dat, i_memb, , , , , ] + asd[which(na_array)] <- NA + var_exp[i_dat, i_memb, , , , , ] <- asd } } + for (i_dat in 1:dimobs[1]) { + for (i_memb in 1:dimobs[2]) { + asd <- var_obs[i_dat, i_memb, , , , , ] + asd[which(na_array)] <- NA + var_obs[i_dat, i_memb, , , , , ] <- asd + } + } + +# nan <- MeanListDim(var_exp, dims = c(1:2, 5:7), narm = FALSE) + +# MeanListDim(var_obs, dims = c(1:2, 5:7), narm = FALSE) +# +# for (jdate in 1:dimexp[3]) { +# for (jtime in 1:dimexp[4]) { +# if (is.na(nan[jdate, jtime])) { +# var_exp[, , jdate, jtime, , , ] <- NA +# var_obs[, , jdate, jtime, , , ] <- NA +# } +# } +# } + + # # Compute climatologies -- GitLab