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
data
andargset
parametersOrganizing 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
name
Character string, name of the dataset
fn
Function that returns the dataset (optional)
fn_name
Character string, name of a function that returns the dataset (optional)
direct
Direct 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
name
Character 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
name
Character string, name of the analysis (defaults to a UUID)
fn
Function to use for the analysis (optional)
fn_name
Character 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
fn
Function to use for all analyses (optional)
fn_name
Character string, name of the function to use (optional)
df
Data 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
fn
Function to use for all analyses (optional)
fn_name
Character string, name of the function to use (optional)
l
List 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
fn
Action function.
fn_name
Action 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_analysis
Either 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_analysis
Either 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_analysis
Either an integer (1:length(analyses)) or a character string representing the name of the analysis.
data
Named 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_analysis
Either 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
#> 2: argset_2 2 8 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"