From b461d2854a5d0c8c12379d53cad760934dd6174b Mon Sep 17 00:00:00 2001 From: Delaigue Olivier <olivier.delaigue@irstea.priv> Date: Mon, 25 Mar 2019 09:54:18 +0100 Subject: [PATCH] v1.2.11.10 BUG: check of range values now works when there is only one Q, SCA or SCE varObs --- DESCRIPTION | 2 +- NEWS.rmd | 2 +- R/CreateInputsCrit.R | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ecaa3a6b..d5549d6d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: airGR Type: Package Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling -Version: 1.2.11.9 +Version: 1.2.11.10 Date: 2019-03-25 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")), diff --git a/NEWS.rmd b/NEWS.rmd index bc003205..3c71ce5a 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -13,7 +13,7 @@ output: -### 1.2.11.9 Release Notes (2019-03-25) +### 1.2.11.10 Release Notes (2019-03-25) diff --git a/R/CreateInputsCrit.R b/R/CreateInputsCrit.R index aa73a2a1..4d84ec94 100644 --- a/R/CreateInputsCrit.R +++ b/R/CreateInputsCrit.R @@ -85,6 +85,9 @@ CreateInputsCrit <- function(FUN_CRIT, listArgs[[iArgs]] <- lapply(seq_along(listArgs$FUN_CRIT), function(x) NULL) } } + if (iArgs %in% c("FUN_CRIT", "varObs", "transfo", "weights") & length(listArgs[[iArgs]]) > 1L) { + listArgs[[iArgs]] <- as.list(listArgs[[iArgs]]) + } if (!is.list(listArgs[[iArgs]])) { listArgs[[iArgs]] <- list(listArgs[[iArgs]]) } @@ -196,7 +199,11 @@ CreateInputsCrit <- function(FUN_CRIT, ## check 'varObs' + 'obs' if (any(iListArgs2$varObs %in% "SCA")) { idSCA <- which(iListArgs2$varObs == "SCA") - vecSCA <- unlist(iListArgs2$obs[idSCA]) + if (length(idSCA) == 1L) { + vecSCA <- iListArgs2$obs + } else { + vecSCA <- unlist(iListArgs2$obs[idSCA]) + } if (min(vecSCA, na.rm = TRUE) < 0 | max(vecSCA, na.rm = TRUE) > 1) { stop("'obs' outside [0,1] for \"SCA\"", call. = FALSE) } @@ -204,7 +211,11 @@ CreateInputsCrit <- function(FUN_CRIT, inPosVarObs <- c("Q", "SWE") if (any(iListArgs2$varObs %in% inPosVarObs)) { idQSS <- which(iListArgs2$varObs %in% inPosVarObs) - vecQSS <- unlist(iListArgs2$obs[idQSS]) + if (length(idQSS) == 1L) { + vecQSS <- iListArgs2$obs + } else { + vecQSS <- unlist(iListArgs2$obs[idQSS]) + } if (min(vecQSS, na.rm = TRUE) < 0) { stop(sprintf("'obs' outside [0,Inf[ for \"%s\"", iListArgs2$varObs), call. = FALSE) } @@ -248,7 +259,7 @@ CreateInputsCrit <- function(FUN_CRIT, obs = iListArgs2$obs, varObs = iListArgs2$varObs, BoolCrit = iListArgs2$BoolCrit, - idLayer = iListArgs2$idLayer, + idLayer = iListArgs2$idLayer, transfo = iListArgs2$transfo, epsilon = iListArgs2$epsilon, weights = iListArgs2$weights) -- GitLab