From 0967defbb0e3e4669231dd6b488377f4869d3d31 Mon Sep 17 00:00:00 2001 From: Delaigue Olivier <olivier.delaigue@irstea.priv> Date: Thu, 2 May 2019 13:51:36 +0200 Subject: [PATCH] v1.2.14.17 UPDATE: CreateInputsCrit returns FUN_CRIT as character string --- DESCRIPTION | 2 +- NEWS.rmd | 2 +- R/CreateInputsCrit.R | 7 +++++++ R/ErrorCrit.R | 20 +++++++++++--------- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 703fc55f..5e11a483 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.14.16 +Version: 1.2.14.17 Date: 2019-05-02 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 53db83b4..46667a84 100644 --- a/NEWS.rmd +++ b/NEWS.rmd @@ -14,7 +14,7 @@ output: -### 1.2.14.16 Release Notes (2019-05-02) +### 1.2.14.17 Release Notes (2019-05-02) #### New features diff --git a/R/CreateInputsCrit.R b/R/CreateInputsCrit.R index 365679f9..ae64a8d6 100644 --- a/R/CreateInputsCrit.R +++ b/R/CreateInputsCrit.R @@ -267,6 +267,7 @@ CreateInputsCrit <- function(FUN_CRIT, } } + ## Create InputsCrit iInputsCrit <- list(FUN_CRIT = iListArgs2$FUN_CRIT, Obs = iListArgs2$Obs, @@ -282,6 +283,12 @@ CreateInputsCrit <- function(FUN_CRIT, }) names(InputsCrit) <- paste0("IC", seq_along(InputsCrit)) + ## define FUN_CRIT as a characater string + listErrorCrit <- c("ErrorCrit_KGE", "ErrorCrit_KGE2", "ErrorCrit_NSE", "ErrorCrit_RMSE") + InputsCrit <- lapply(InputsCrit, function(i) { + i$FUN_CRIT <- listErrorCrit[sapply(listErrorCrit, function(j) identical(i$FUN_CRIT, get(j)))] + i + }) listVarObs <- sapply(InputsCrit, FUN = "[[", "VarObs") inCnVarObs <- c("SCA", "SWE") diff --git a/R/ErrorCrit.R b/R/ErrorCrit.R index 53f65119..28e9368a 100644 --- a/R/ErrorCrit.R +++ b/R/ErrorCrit.R @@ -19,10 +19,11 @@ ErrorCrit <- function(InputsCrit, OutputsModel, FUN_CRIT, warnings = TRUE, verbo ## ----- Single criterion if (inherits(InputsCrit, "Single")) { - OutputsCrit <- InputsCrit$FUN_CRIT(InputsCrit = InputsCrit, - OutputsModel = OutputsModel, - warnings = warnings, - verbose = verbose) + FUN_CRIT <- match.fun(InputsCrit$FUN_CRIT) + OutputsCrit <- FUN_CRIT(InputsCrit = InputsCrit, + OutputsModel = OutputsModel, + warnings = warnings, + verbose = verbose) } @@ -30,10 +31,11 @@ ErrorCrit <- function(InputsCrit, OutputsModel, FUN_CRIT, warnings = TRUE, verbo if (inherits(InputsCrit, "Multi") | inherits(InputsCrit, "Compo")) { listOutputsCrit <- lapply(InputsCrit, FUN = function(iInputsCrit) { - iInputsCrit$FUN_CRIT(InputsCrit = iInputsCrit, - OutputsModel = OutputsModel, - warnings = warnings, - verbose = verbose) + FUN_CRIT <- match.fun(iInputsCrit$FUN_CRIT) + FUN_CRIT(InputsCrit = iInputsCrit, + OutputsModel = OutputsModel, + warnings = warnings, + verbose = verbose) }) listValCrit <- sapply(listOutputsCrit, function(x) x[["CritValue"]]) @@ -70,7 +72,7 @@ ErrorCrit <- function(InputsCrit, OutputsModel, FUN_CRIT, warnings = TRUE, verbo } } - + return(OutputsCrit) } -- GitLab