The Plan class provides a framework for organizing and executing multiple analyses
on one or more datasets. It enforces a structured approach to analysis by:
Data Management:
Loading data once and reusing across analyses
Separating data cleaning from analysis
Providing hash-based tracking of data changes
Analysis Structure:
Requiring all analyses to use the same data sources
Standardizing analysis functions to accept only
dataandargsetparametersOrganizing analyses into clear, maintainable plans
Execution Control:
Supporting both single-function and multi-function analysis plans
Providing flexible execution options (sequential or parallel)
Including built-in debugging tools
Details
The framework uses three main concepts:
Argset: A named list containing a set of arguments for an analysis
Analysis: A combination of one argset and one action function
Plan: A container that holds one data pull and a list of analyses
Methods
Method new()
Create a new Plan instance
Usage
Plan$new(verbose = interactive() | config$force_verbose, use_foreach = FALSE)Method add_data()
Add a new dataset to the plan
Arguments
nameCharacter string, name of the dataset
fnFunction that returns the dataset (optional)
fn_nameCharacter string, name of a function that returns the dataset (optional)
directDirect dataset object (optional)
Examples
p <- plnr::Plan$new()
# Add data using a function
data_fn <- function() { return(plnr::nor_covid19_cases_by_time_location) }
p$add_data("data_1", fn = data_fn)
# Add data using a function name
p$add_data("data_2", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Add data directly
p$add_data("data_3", direct = plnr::nor_covid19_cases_by_time_location)
# View added data
p$get_data()Method add_argset()
Add a new argset to the plan
Usage
Plan$add_argset(name = uuid::UUIDgenerate(), ...)Arguments
nameCharacter string, name of the argset (defaults to a UUID)
...Named arguments that will comprise the argset
Examples
p <- plnr::Plan$new()
# Add argsets with different arguments
p$add_argset("argset_1", var_1 = 3, var_b = "hello")
p$add_argset("argset_2", var_1 = 8, var_c = "hello2")
# View added argsets
p$get_argsets_as_dt()Method add_argset_from_df()
Add multiple argsets from a data frame
Examples
p <- plnr::Plan$new()
# Create data frame of argsets
batch_argset_df <- data.frame(
  name = c("a", "b", "c"),
  var_1 = c(1, 2, 3),
  var_2 = c("i", "j", "k")
)
# Add argsets from data frame
p$add_argset_from_df(batch_argset_df)
# View added argsets
p$get_argsets_as_dt()Method add_argset_from_list()
Add multiple argsets from a list
Examples
p <- plnr::Plan$new()
# Create list of argsets
batch_argset_list <- list(
  list(name = "a", var_1 = 1, var_2 = "i"),
  list(name = "b", var_1 = 2, var_2 = "j"),
  list(name = "c", var_1 = 3, var_2 = "k")
)
# Add argsets from list
p$add_argset_from_list(batch_argset_list)
# View added argsets
p$get_argsets_as_dt()Method add_analysis()
Add a new analysis to the plan
Usage
Plan$add_analysis(name = uuid::UUIDgenerate(), fn = NULL, fn_name = NULL, ...)Arguments
nameCharacter string, name of the analysis (defaults to a UUID)
fnFunction to use for the analysis (optional)
fn_nameCharacter string, name of the function to use (optional)
...Additional arguments to be added to the argset
Examples
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Add analysis
p$add_analysis(
  name = "analysis_1",
  fn_name = "plnr::example_action_fn"
)
# View argsets and run analysis
p$get_argsets_as_dt()
p$run_one("analysis_1")Method add_analysis_from_df()
Add multiple analyses from a data frame
Arguments
fnFunction to use for all analyses (optional)
fn_nameCharacter string, name of the function to use (optional)
dfData frame where each row represents a new analysis
Examples
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Create data frame of analyses
batch_argset_df <- data.frame(
  name = c("a", "b", "c"),
  var_1 = c(1, 2, 3),
  var_2 = c("i", "j", "k")
)
# Add analyses from data frame
p$add_analysis_from_df(
  fn_name = "plnr::example_action_fn",
  df = batch_argset_df
)
# View argsets and run example
p$get_argsets_as_dt()
p$run_one(1)Method add_analysis_from_list()
Add multiple analyses from a list
Arguments
fnFunction to use for all analyses (optional)
fn_nameCharacter string, name of the function to use (optional)
lList of lists, where each inner list represents a new analysis
Examples
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Create list of analyses
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
# Add analyses from list
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
# View argsets and run example
p$get_argsets_as_dt()
p$run_one("analysis_1")Method apply_action_fn_to_all_argsets()
Applies an action function to all the argsets
Arguments
fnAction function.
fn_nameAction function name. p <- plnr::Plan$new() p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location") batch_argset_list <- list( list(name = "analysis_1", var_1 = 1, var_2 = "i"), list(name = "analysis_2", var_1 = 2, var_2 = "j"), list(name = "analysis_3", var_1 = 3, var_2 = "k") ) p$add_argset_from_list( fn_name = "plnr::example_action_fn", l = batch_argset_list ) p$get_argsets_as_dt() p$apply_action_fn_to_all_argsets(fn_name = "plnr::example_action_fn") p$run_one("analysis_1")
Method get_data()
Extracts the data provided via 'add_data' and returns it as a named list.
Returns
Named list, where most elements have been added via add_data.
One extra named element is called 'hash'. 'hash' contains the data hashes of particular datasets/variables, as calculated using the 'spookyhash' algorithm via digest::digest. 'hash' contains two named elements:
current (the hash of the entire named list)
current_elements (the hash of the named elements within the named list)
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
p$get_data()Method get_analysis()
Extracts an analysis from the plan.
Arguments
index_analysisEither an integer (1:length(analyses)) or a character string representing the name of the analysis.
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_analysis("analysis_1")Method get_argset()
Extracts an argset from the plan.
Arguments
index_analysisEither an integer (1:length(analyses)) or a character string representing the name of the analysis.
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_argset("analysis_1")Method get_argsets_as_dt()
Gets all argsets and presents them as a data.table.
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_argsets_as_dt()Method run_one_with_data()
Run one analysis (data is provided by user).
Arguments
index_analysisEither an integer (1:length(analyses)) or a character string representing the name of the analysis.
dataNamed list (generally obtained from p$get_data()).
...Not used.
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
data <- p$get_data()
p$run_one_with_data("analysis_1", data)Method run_one()
Run one analysis (data is obtained automatically from self$get_data()).
Arguments
index_analysisEither an integer (1:length(analyses)) or a character string representing the name of the analysis.
...Not used.
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_one("analysis_1")Method run_all_with_data()
Run all analyses (data is provided by user).
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
data <- p$get_data()
p$run_all_with_data(data)Method run_all()
Run all analyses (data is obtained automatically from self$get_data()).
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_all()Method run_all_progress()
Run all analyses with a progress bar (data is obtained automatically from self$get_data()).
Examples
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_all_progress()Method run_all_parallel()
Run all analyses in parallel (data is obtained automatically from self$get_data()).
This function only works on linux computers and uses pbmcapply as the parallel backend.
Usage
Plan$run_all_parallel(mc.cores = getOption("mc.cores", 2L), ...)Examples
## ------------------------------------------------
## Method `Plan$add_data`
## ------------------------------------------------
p <- plnr::Plan$new()
# Add data using a function
data_fn <- function() { return(plnr::nor_covid19_cases_by_time_location) }
p$add_data("data_1", fn = data_fn)
# Add data using a function name
p$add_data("data_2", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Add data directly
p$add_data("data_3", direct = plnr::nor_covid19_cases_by_time_location)
# View added data
p$get_data()
#> $data_1
#>        granularity_time granularity_geo country_iso3 location_code border
#>                  <char>          <char>       <char>        <char>  <int>
#>     1:              day          county          nor  county_nor03   2020
#>     2:              day          county          nor  county_nor03   2020
#>     3:              day          county          nor  county_nor03   2020
#>     4:              day          county          nor  county_nor03   2020
#>     5:              day          county          nor  county_nor03   2020
#>    ---                                                                   
#> 11024:          isoweek          nation          nor    nation_nor   2020
#> 11025:          isoweek          nation          nor    nation_nor   2020
#> 11026:          isoweek          nation          nor    nation_nor   2020
#> 11027:          isoweek          nation          nor    nation_nor   2020
#> 11028:          isoweek          nation          nor    nation_nor   2020
#>           age    sex isoyear isoweek isoyearweek    season seasonweek calyear
#>        <char> <char>   <int>   <int>      <char>    <char>      <num>   <int>
#>     1:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     2:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     3:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     4:  total  total    2020       9     2020-09 2019/2020         32    2020
#>     5:  total  total    2020       9     2020-09 2019/2020         32    2020
#>    ---                                                                       
#> 11024:  total  total    2022      14     2022-14 2021/2022         37      NA
#> 11025:  total  total    2022      15     2022-15 2021/2022         38      NA
#> 11026:  total  total    2022      16     2022-16 2021/2022         39      NA
#> 11027:  total  total    2022      17     2022-17 2021/2022         40      NA
#> 11028:  total  total    2022      18     2022-18 2021/2022         41      NA
#>        calmonth calyearmonth       date covid19_cases_testdate_n
#>           <int>       <char>     <Date>                    <int>
#>     1:        2     2020-M02 2020-02-21                        0
#>     2:        2     2020-M02 2020-02-22                        0
#>     3:        2     2020-M02 2020-02-23                        0
#>     4:        2     2020-M02 2020-02-24                        0
#>     5:        2     2020-M02 2020-02-25                        0
#>    ---                                                          
#> 11024:       NA         <NA> 2022-04-10                     6888
#> 11025:       NA         <NA> 2022-04-17                     3635
#> 11026:       NA         <NA> 2022-04-24                     3764
#> 11027:       NA         <NA> 2022-05-01                     2243
#> 11028:       NA         <NA> 2022-05-08                      502
#>        covid19_cases_testdate_pr100000
#>                                  <num>
#>     1:                        0.000000
#>     2:                        0.000000
#>     3:                        0.000000
#>     4:                        0.000000
#>     5:                        0.000000
#>    ---                                
#> 11024:                      126.961423
#> 11025:                       67.001274
#> 11026:                       69.379036
#> 11027:                       41.343564
#> 11028:                        9.252996
#> 
#> $data_2
#>        granularity_time granularity_geo country_iso3 location_code border
#>                  <char>          <char>       <char>        <char>  <int>
#>     1:              day          county          nor  county_nor03   2020
#>     2:              day          county          nor  county_nor03   2020
#>     3:              day          county          nor  county_nor03   2020
#>     4:              day          county          nor  county_nor03   2020
#>     5:              day          county          nor  county_nor03   2020
#>    ---                                                                   
#> 11024:          isoweek          nation          nor    nation_nor   2020
#> 11025:          isoweek          nation          nor    nation_nor   2020
#> 11026:          isoweek          nation          nor    nation_nor   2020
#> 11027:          isoweek          nation          nor    nation_nor   2020
#> 11028:          isoweek          nation          nor    nation_nor   2020
#>           age    sex isoyear isoweek isoyearweek    season seasonweek calyear
#>        <char> <char>   <int>   <int>      <char>    <char>      <num>   <int>
#>     1:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     2:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     3:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     4:  total  total    2020       9     2020-09 2019/2020         32    2020
#>     5:  total  total    2020       9     2020-09 2019/2020         32    2020
#>    ---                                                                       
#> 11024:  total  total    2022      14     2022-14 2021/2022         37      NA
#> 11025:  total  total    2022      15     2022-15 2021/2022         38      NA
#> 11026:  total  total    2022      16     2022-16 2021/2022         39      NA
#> 11027:  total  total    2022      17     2022-17 2021/2022         40      NA
#> 11028:  total  total    2022      18     2022-18 2021/2022         41      NA
#>        calmonth calyearmonth       date covid19_cases_testdate_n
#>           <int>       <char>     <Date>                    <int>
#>     1:        2     2020-M02 2020-02-21                        0
#>     2:        2     2020-M02 2020-02-22                        0
#>     3:        2     2020-M02 2020-02-23                        0
#>     4:        2     2020-M02 2020-02-24                        0
#>     5:        2     2020-M02 2020-02-25                        0
#>    ---                                                          
#> 11024:       NA         <NA> 2022-04-10                     6888
#> 11025:       NA         <NA> 2022-04-17                     3635
#> 11026:       NA         <NA> 2022-04-24                     3764
#> 11027:       NA         <NA> 2022-05-01                     2243
#> 11028:       NA         <NA> 2022-05-08                      502
#>        covid19_cases_testdate_pr100000
#>                                  <num>
#>     1:                        0.000000
#>     2:                        0.000000
#>     3:                        0.000000
#>     4:                        0.000000
#>     5:                        0.000000
#>    ---                                
#> 11024:                      126.961423
#> 11025:                       67.001274
#> 11026:                       69.379036
#> 11027:                       41.343564
#> 11028:                        9.252996
#> 
#> $data_3
#>        granularity_time granularity_geo country_iso3 location_code border
#>                  <char>          <char>       <char>        <char>  <int>
#>     1:              day          county          nor  county_nor03   2020
#>     2:              day          county          nor  county_nor03   2020
#>     3:              day          county          nor  county_nor03   2020
#>     4:              day          county          nor  county_nor03   2020
#>     5:              day          county          nor  county_nor03   2020
#>    ---                                                                   
#> 11024:          isoweek          nation          nor    nation_nor   2020
#> 11025:          isoweek          nation          nor    nation_nor   2020
#> 11026:          isoweek          nation          nor    nation_nor   2020
#> 11027:          isoweek          nation          nor    nation_nor   2020
#> 11028:          isoweek          nation          nor    nation_nor   2020
#>           age    sex isoyear isoweek isoyearweek    season seasonweek calyear
#>        <char> <char>   <int>   <int>      <char>    <char>      <num>   <int>
#>     1:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     2:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     3:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     4:  total  total    2020       9     2020-09 2019/2020         32    2020
#>     5:  total  total    2020       9     2020-09 2019/2020         32    2020
#>    ---                                                                       
#> 11024:  total  total    2022      14     2022-14 2021/2022         37      NA
#> 11025:  total  total    2022      15     2022-15 2021/2022         38      NA
#> 11026:  total  total    2022      16     2022-16 2021/2022         39      NA
#> 11027:  total  total    2022      17     2022-17 2021/2022         40      NA
#> 11028:  total  total    2022      18     2022-18 2021/2022         41      NA
#>        calmonth calyearmonth       date covid19_cases_testdate_n
#>           <int>       <char>     <Date>                    <int>
#>     1:        2     2020-M02 2020-02-21                        0
#>     2:        2     2020-M02 2020-02-22                        0
#>     3:        2     2020-M02 2020-02-23                        0
#>     4:        2     2020-M02 2020-02-24                        0
#>     5:        2     2020-M02 2020-02-25                        0
#>    ---                                                          
#> 11024:       NA         <NA> 2022-04-10                     6888
#> 11025:       NA         <NA> 2022-04-17                     3635
#> 11026:       NA         <NA> 2022-04-24                     3764
#> 11027:       NA         <NA> 2022-05-01                     2243
#> 11028:       NA         <NA> 2022-05-08                      502
#>        covid19_cases_testdate_pr100000
#>                                  <num>
#>     1:                        0.000000
#>     2:                        0.000000
#>     3:                        0.000000
#>     4:                        0.000000
#>     5:                        0.000000
#>    ---                                
#> 11024:                      126.961423
#> 11025:                       67.001274
#> 11026:                       69.379036
#> 11027:                       41.343564
#> 11028:                        9.252996
#> 
#> $hash
#> $hash$current
#> [1] "f94ed40e7cee3cdea8d42ef836fb63cd"
#> 
#> $hash$current_elements
#> $hash$current_elements$data_1
#> [1] "7f1b0a581386e75e907bffd94938a3a7"
#> 
#> $hash$current_elements$data_2
#> [1] "7f1b0a581386e75e907bffd94938a3a7"
#> 
#> $hash$current_elements$data_3
#> [1] "7f1b0a581386e75e907bffd94938a3a7"
#> 
#> 
#> 
## ------------------------------------------------
## Method `Plan$add_argset`
## ------------------------------------------------
p <- plnr::Plan$new()
# Add argsets with different arguments
p$add_argset("argset_1", var_1 = 3, var_b = "hello")
p$add_argset("argset_2", var_1 = 8, var_c = "hello2")
# View added argsets
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_b  var_c
#>           <char>          <int> <list> <list> <list>
#> 1:      argset_1              1      3  hello [NULL]
#> 2:      argset_2              2      8 [NULL] hello2
## ------------------------------------------------
## Method `Plan$add_argset_from_df`
## ------------------------------------------------
p <- plnr::Plan$new()
# Create data frame of argsets
batch_argset_df <- data.frame(
  name = c("a", "b", "c"),
  var_1 = c(1, 2, 3),
  var_2 = c("i", "j", "k")
)
# Add argsets from data frame
p$add_argset_from_df(batch_argset_df)
# View added argsets
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_2
#>           <char>          <int> <list> <list>
#> 1:             a              1      1      i
#> 2:             b              2      2      j
#> 3:             c              3      3      k
## ------------------------------------------------
## Method `Plan$add_argset_from_list`
## ------------------------------------------------
p <- plnr::Plan$new()
# Create list of argsets
batch_argset_list <- list(
  list(name = "a", var_1 = 1, var_2 = "i"),
  list(name = "b", var_1 = 2, var_2 = "j"),
  list(name = "c", var_1 = 3, var_2 = "k")
)
# Add argsets from list
p$add_argset_from_list(batch_argset_list)
# View added argsets
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_2
#>           <char>          <int> <list> <list>
#> 1:             a              1      1      i
#> 2:             b              2      2      j
#> 3:             c              3      3      k
## ------------------------------------------------
## Method `Plan$add_analysis`
## ------------------------------------------------
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Add analysis
p$add_analysis(
  name = "analysis_1",
  fn_name = "plnr::example_action_fn"
)
# View argsets and run analysis
p$get_argsets_as_dt()
#>    name_analysis index_analysis
#>           <char>          <int>
#> 1:    analysis_1              1
p$run_one("analysis_1")
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "index_analysis"
#> [1] "index_analysis"
## ------------------------------------------------
## Method `Plan$add_analysis_from_df`
## ------------------------------------------------
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Create data frame of analyses
batch_argset_df <- data.frame(
  name = c("a", "b", "c"),
  var_1 = c(1, 2, 3),
  var_2 = c("i", "j", "k")
)
# Add analyses from data frame
p$add_analysis_from_df(
  fn_name = "plnr::example_action_fn",
  df = batch_argset_df
)
# View argsets and run example
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_2
#>           <char>          <int> <list> <list>
#> 1:             a              1      1      i
#> 2:             b              2      2      j
#> 3:             c              3      3      k
p$run_one(1)
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$add_analysis_from_list`
## ------------------------------------------------
p <- plnr::Plan$new()
# Add example data
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
# Create list of analyses
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
# Add analyses from list
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
# View argsets and run example
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_2
#>           <char>          <int> <list> <list>
#> 1:    analysis_1              1      1      i
#> 2:    analysis_2              2      2      j
#> 3:    analysis_3              3      3      k
p$run_one("analysis_1")
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$get_data`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
p$get_data()
#> $covid_data
#>        granularity_time granularity_geo country_iso3 location_code border
#>                  <char>          <char>       <char>        <char>  <int>
#>     1:              day          county          nor  county_nor03   2020
#>     2:              day          county          nor  county_nor03   2020
#>     3:              day          county          nor  county_nor03   2020
#>     4:              day          county          nor  county_nor03   2020
#>     5:              day          county          nor  county_nor03   2020
#>    ---                                                                   
#> 11024:          isoweek          nation          nor    nation_nor   2020
#> 11025:          isoweek          nation          nor    nation_nor   2020
#> 11026:          isoweek          nation          nor    nation_nor   2020
#> 11027:          isoweek          nation          nor    nation_nor   2020
#> 11028:          isoweek          nation          nor    nation_nor   2020
#>           age    sex isoyear isoweek isoyearweek    season seasonweek calyear
#>        <char> <char>   <int>   <int>      <char>    <char>      <num>   <int>
#>     1:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     2:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     3:  total  total    2020       8     2020-08 2019/2020         31    2020
#>     4:  total  total    2020       9     2020-09 2019/2020         32    2020
#>     5:  total  total    2020       9     2020-09 2019/2020         32    2020
#>    ---                                                                       
#> 11024:  total  total    2022      14     2022-14 2021/2022         37      NA
#> 11025:  total  total    2022      15     2022-15 2021/2022         38      NA
#> 11026:  total  total    2022      16     2022-16 2021/2022         39      NA
#> 11027:  total  total    2022      17     2022-17 2021/2022         40      NA
#> 11028:  total  total    2022      18     2022-18 2021/2022         41      NA
#>        calmonth calyearmonth       date covid19_cases_testdate_n
#>           <int>       <char>     <Date>                    <int>
#>     1:        2     2020-M02 2020-02-21                        0
#>     2:        2     2020-M02 2020-02-22                        0
#>     3:        2     2020-M02 2020-02-23                        0
#>     4:        2     2020-M02 2020-02-24                        0
#>     5:        2     2020-M02 2020-02-25                        0
#>    ---                                                          
#> 11024:       NA         <NA> 2022-04-10                     6888
#> 11025:       NA         <NA> 2022-04-17                     3635
#> 11026:       NA         <NA> 2022-04-24                     3764
#> 11027:       NA         <NA> 2022-05-01                     2243
#> 11028:       NA         <NA> 2022-05-08                      502
#>        covid19_cases_testdate_pr100000
#>                                  <num>
#>     1:                        0.000000
#>     2:                        0.000000
#>     3:                        0.000000
#>     4:                        0.000000
#>     5:                        0.000000
#>    ---                                
#> 11024:                      126.961423
#> 11025:                       67.001274
#> 11026:                       69.379036
#> 11027:                       41.343564
#> 11028:                        9.252996
#> 
#> $hash
#> $hash$current
#> [1] "18b3aa368375163b3eee188988c8c15c"
#> 
#> $hash$current_elements
#> $hash$current_elements$covid_data
#> [1] "7f1b0a581386e75e907bffd94938a3a7"
#> 
#> 
#> 
## ------------------------------------------------
## Method `Plan$get_analysis`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_analysis("analysis_1")
#> $fn
#> NULL
#> 
#> $fn_name
#> [1] "plnr::example_action_fn"
#> 
#> $argset
#> $argset$var_1
#> [1] 1
#> 
#> $argset$var_2
#> [1] "i"
#> 
#> $argset$index_analysis
#> [1] "analysis_1"
#> 
#> 
## ------------------------------------------------
## Method `Plan$get_argset`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_argset("analysis_1")
#> $var_1
#> [1] 1
#> 
#> $var_2
#> [1] "i"
#> 
## ------------------------------------------------
## Method `Plan$get_argsets_as_dt`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$get_argsets_as_dt()
#>    name_analysis index_analysis  var_1  var_2
#>           <char>          <int> <list> <list>
#> 1:    analysis_1              1      1      i
#> 2:    analysis_2              2      2      j
#> 3:    analysis_3              3      3      k
## ------------------------------------------------
## Method `Plan$run_one_with_data`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
data <- p$get_data()
p$run_one_with_data("analysis_1", data)
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$run_one`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_one("analysis_1")
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$run_all_with_data`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
data <- p$get_data()
p$run_all_with_data(data)
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$run_all`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_all()
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
## ------------------------------------------------
## Method `Plan$run_all_progress`
## ------------------------------------------------
p <- plnr::Plan$new()
p$add_data("covid_data", fn_name = "plnr::example_data_fn_nor_covid19_cases_by_time_location")
batch_argset_list <- list(
  list(name = "analysis_1", var_1 = 1, var_2 = "i"),
  list(name = "analysis_2", var_1 = 2, var_2 = "j"),
  list(name = "analysis_3", var_1 = 3, var_2 = "k")
)
p$add_analysis_from_list(
  fn_name = "plnr::example_action_fn",
  l = batch_argset_list
)
p$run_all_progress()
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
#> [1] "Data given:"
#> [1] "covid_data" "hash"      
#> [1] "Argset given:"
#> [1] "var_1"          "var_2"          "index_analysis"
