From bbfdd566fe444e9695c437e55f2ae6ff01a56704 Mon Sep 17 00:00:00 2001 From: aho Date: Thu, 30 Mar 2023 16:49:17 +0200 Subject: [PATCH] Avoid using apply(,sum) to improve efficiency --- R/RPS.R | 5 ++--- R/RPSS.R | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/R/RPS.R b/R/RPS.R index a12f6a5..75619b6 100644 --- a/R/RPS.R +++ b/R/RPS.R @@ -249,14 +249,13 @@ RPS <- function(exp, obs, time_dim = 'sdate', memb_dim = 'member', dat_dim = NUL probs_obs_cumsum <- apply(obs_probs, 2, cumsum) # rps: [sdate, nexp, nobs] - rps[ , i, j] <- apply((probs_exp_cumsum - probs_obs_cumsum)^2, 2, sum) - + rps[ , i, j] <- colSums((probs_exp_cumsum - probs_obs_cumsum)^2) if (Fair) { # FairRPS ## adjustment <- rowSums(-1 * (1/R - 1/R.new) * ens.cum * (R - ens.cum)/R/(R - 1)) [formula taken from SpecsVerification::EnsRps] R <- dim(exp)[2] #memb R_new <- Inf adjustment <- (-1) / (R - 1) * probs_exp_cumsum * (1 - probs_exp_cumsum) - adjustment <- apply(adjustment, 2, sum) + adjustment <- colSums(adjustment) rps[ , i, j] <- rps[ , i, j] + adjustment } } diff --git a/R/RPSS.R b/R/RPSS.R index 16d038f..ab433e9 100644 --- a/R/RPSS.R +++ b/R/RPSS.R @@ -360,8 +360,7 @@ RPSS <- function(exp, obs, ref = NULL, time_dim = 'sdate', memb_dim = 'member', # Calculate RPS for each time step probs_clim_cumsum <- apply(clim_probs, 2, cumsum) probs_obs_cumsum <- apply(obs_probs, 2, cumsum) - rps_ref[ , j] <- apply((probs_clim_cumsum - probs_obs_cumsum)^2, 2, sum) - + rps_ref[ , j] <- colSums((probs_clim_cumsum - probs_obs_cumsum)^2) # if (Fair) { # FairRPS # ## adjustment <- rowSums(-1 * (1/R - 1/R.new) * ens.cum * (R - ens.cum)/R/(R - 1)) [formula taken from SpecsVerification::EnsRps] # R <- dim(exp)[2] #memb -- GitLab