From 4e2a8ef5a1777563d7f8c16b3a8db8ca5515847e Mon Sep 17 00:00:00 2001 From: njtierney Date: Fri, 13 Feb 2026 15:15:53 +1100 Subject: [PATCH 1/2] address case_when dplyr 1.2 issues --- R/get_polymod_contact_data.R | 61 +++++++++++++++++++++++---------- man/get_polymod_contact_data.Rd | 13 ++++--- 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/R/get_polymod_contact_data.R b/R/get_polymod_contact_data.R index ada06375..2980c53f 100644 --- a/R/get_polymod_contact_data.R +++ b/R/get_polymod_contact_data.R @@ -29,13 +29,12 @@ #' number of participants in that row. #' @examples #' get_polymod_contact_data() -#' get_polymod_contact_data(setting = "home") -#' get_polymod_contact_data(countries = "Belgium") -#' get_polymod_contact_data(countries = c("Belgium", "Italy")) -#' get_polymod_contact_data(ages = 0:50) -#' get_polymod_contact_data(contact_age_imputation = "sample") -#' get_polymod_contact_data(contact_age_imputation = "mean") -#' get_polymod_contact_data(contact_age_imputation = "remove_participant") +#' get_polymod_contact_data( +#' setting = "home", +#' countries = c("Belgium", "Italy"), +#' ages = 0:50, +#' contact_age_imputation = "mean" +#' ) #' @export get_polymod_contact_data <- function( setting = c("all", "home", "work", "school", "other"), @@ -110,17 +109,7 @@ get_polymod_contact_data <- function( !missing_any_contact_setting ) - # get contacts by setting (keeping 0s, so we can record 0 contacts for some individuals) - contact_data_setting <- contact_data_filtered %>% - dplyr::mutate( - contacted = dplyr::case_when( - setting == "all" ~ 1L, - setting == "home" ~ cnt_home, - setting == "school" ~ cnt_school, - setting == "work" ~ cnt_work, - setting == "other" ~ pmax(cnt_transport, cnt_leisure, cnt_otherplace), - ) - ) + contact_data_setting <- add_contacted_setting(contact_data_filtered, setting) # collapse down number of contacts per participant and contact age contact_data_setting %>% @@ -151,3 +140,39 @@ get_polymod_contact_data <- function( .before = dplyr::everything() ) } + +# helper function to replace deprecated usage of case_when +add_contacted_setting <- function( + contact_data_filtered, + setting = c("all", "home", "school", "work", "other") +) { + setting <- rlang::arg_match(setting) + + if (setting == "all") { + contact_data_setting <- contact_data_filtered |> + dplyr::mutate( + contacted = 1L + ) + } else if (setting == "home") { + contact_data_setting <- contact_data_filtered |> + dplyr::mutate( + contacted = cnt_home + ) + } else if (setting == "school") { + contact_data_setting <- contact_data_filtered |> + dplyr::mutate( + contacted = cnt_school + ) + } else if (setting == "work") { + contact_data_setting <- contact_data_filtered |> + dplyr::mutate( + contacted = cnt_work + ) + } else if (setting == "other") { + contact_data_setting <- contact_data_filtered |> + dplyr::mutate( + contacted = pmax(cnt_transport, cnt_leisure, cnt_otherplace) + ) + } + contact_data_setting +} diff --git a/man/get_polymod_contact_data.Rd b/man/get_polymod_contact_data.Rd index 26ff5c66..72a5e561 100644 --- a/man/get_polymod_contact_data.Rd +++ b/man/get_polymod_contact_data.Rd @@ -51,11 +51,10 @@ settings. } \examples{ get_polymod_contact_data() -get_polymod_contact_data(setting = "home") -get_polymod_contact_data(countries = "Belgium") -get_polymod_contact_data(countries = c("Belgium", "Italy")) -get_polymod_contact_data(ages = 0:50) -get_polymod_contact_data(contact_age_imputation = "sample") -get_polymod_contact_data(contact_age_imputation = "mean") -get_polymod_contact_data(contact_age_imputation = "remove_participant") +get_polymod_contact_data( + setting = "home", + countries = c("Belgium", "Italy"), + ages = 0:50, + contact_age_imputation = "mean" +) } From 1c05971bd026f746e7471ed3ca55c8b44018f4da Mon Sep 17 00:00:00 2001 From: njtierney Date: Fri, 13 Feb 2026 15:16:02 +1100 Subject: [PATCH 2/2] try and reduce test time --- R/fit_single_contact_model.R | 6 +----- R/partial-prediction-helpers.R | 16 ++-------------- man/fit_single_contact_model.Rd | 6 +----- man/partial-prediction-sum.Rd | 9 +-------- man/partial-prediction.Rd | 7 +------ 5 files changed, 6 insertions(+), 38 deletions(-) diff --git a/R/fit_single_contact_model.R b/R/fit_single_contact_model.R index 46a531cf..6f2085fc 100644 --- a/R/fit_single_contact_model.R +++ b/R/fit_single_contact_model.R @@ -131,15 +131,11 @@ #' age_from <= 20 #' ) #' -#' my_mod <- fit_single_contact_model( -#' contact_data = example_contact_20, -#' population = example_population -#' ) -#' #' # you can specify your own population data for school and work demographics #' my_mod_diff_data <- fit_single_contact_model( #' contact_data = example_contact_20, #' population = example_population, +#' # optional arguments #' school_demographics = conmat_original_school_demographics, #' work_demographics = conmat_original_work_demographics #' ) diff --git a/R/partial-prediction-helpers.R b/R/partial-prediction-helpers.R index eb5f70e9..3e63cc2d 100644 --- a/R/partial-prediction-helpers.R +++ b/R/partial-prediction-helpers.R @@ -24,12 +24,7 @@ #' @name partial-prediction #' @examples #' partials_home <- partial_effects( -#' polymod_setting_models$home, -#' ages = 1:99 -#' ) -#' # partial effects for all settings -#' partials_setting <- partial_effects( -#' polymod_setting_models, +#' polymod_setting_models$home, # Do for all models by omitting $home #' ages = 1:99 #' ) #' @export @@ -103,16 +98,9 @@ partial_effects.setting_contact_model <- function(model, ages, ...) { #' the coefficients for that age bracket. #' @name partial-prediction-sum #' @examples -#' # Summed up partial effects (y-hat) for a single setting -#' partials_summed_home <- partial_effects_sum( -#' polymod_setting_models$home, -#' ages = 1:99 -#' ) -#' -#' autoplot(partials_summed_home) #' # summed up partial effects (y-hat) for all settings #' partials_summed_setting <- partial_effects_sum( -#' polymod_setting_models, +#' polymod_setting_models, # can also do for one setting with $home #' ages = 1:99 #' ) #' autoplot(partials_summed_setting) diff --git a/man/fit_single_contact_model.Rd b/man/fit_single_contact_model.Rd index b66e027a..ebc4034e 100644 --- a/man/fit_single_contact_model.Rd +++ b/man/fit_single_contact_model.Rd @@ -150,15 +150,11 @@ example_contact_20 <- example_contact \%>\% age_from <= 20 ) -my_mod <- fit_single_contact_model( - contact_data = example_contact_20, - population = example_population -) - # you can specify your own population data for school and work demographics my_mod_diff_data <- fit_single_contact_model( contact_data = example_contact_20, population = example_population, + # optional arguments school_demographics = conmat_original_school_demographics, work_demographics = conmat_original_work_demographics ) diff --git a/man/partial-prediction-sum.Rd b/man/partial-prediction-sum.Rd index 4fa0fc5d..fc1d5e38 100644 --- a/man/partial-prediction-sum.Rd +++ b/man/partial-prediction-sum.Rd @@ -37,16 +37,9 @@ Scales are not comparable \emph{across} settings, as each setting has it's own intercept term, which is not accounted for in partial effects. } \examples{ -# Summed up partial effects (y-hat) for a single setting -partials_summed_home <- partial_effects_sum( - polymod_setting_models$home, - ages = 1:99 - ) - -autoplot(partials_summed_home) # summed up partial effects (y-hat) for all settings partials_summed_setting <- partial_effects_sum( - polymod_setting_models, + polymod_setting_models, # can also do for one setting with $home ages = 1:99 ) autoplot(partials_summed_setting) diff --git a/man/partial-prediction.Rd b/man/partial-prediction.Rd index f5b72bc4..c7b95d3f 100644 --- a/man/partial-prediction.Rd +++ b/man/partial-prediction.Rd @@ -45,12 +45,7 @@ intercept term which is not accounted for in partial effects. } \examples{ partials_home <- partial_effects( - polymod_setting_models$home, - ages = 1:99 - ) -# partial effects for all settings -partials_setting <- partial_effects( - polymod_setting_models, + polymod_setting_models$home, # Do for all models by omitting $home ages = 1:99 ) }