Overview
plnr is a powerful framework for planning and executing analyses in R. It’s designed for scenarios where you need to:
- Run the same function multiple times with different arguments
- Execute multiple different functions on the same datasets
- Create systematic analyses across multiple strata or variables
Key Features
- Efficient Data Management: Load data once and reuse across multiple analyses
- Structured Analysis Planning: Organize analyses into clear, maintainable plans
- Flexible Execution: Support for both single-function and multi-function analysis plans
- Built-in Debugging: Convenient tools for development and testing
- Parallel Processing: Optional parallel execution of analyses
- Hash-based Caching: Track data changes and optimize execution
Installation
From CRAN
install.packages("plnr")Development Version
To install the development version or access packages that haven’t been released on CRAN:
- Edit your .Rprofile:
usethis::edit_r_profile()- Add the following configuration:
options(
  repos = structure(c(
    CSVERSE = "https://www.csids.no/drat/",
    CRAN    = "https://cran.rstudio.com"
  ))
)- Restart R and install:
install.packages("plnr")Getting Started
- Read the introduction vignette
- Check out the adding analyses guide
- Run help(package="plnr")for detailed function documentation
Quick Example
library(plnr)
library(ggplot2)
library(data.table)
# Create a new plan
p <- Plan$new()
# Add data
p$add_data(
  name = "deaths",
  direct = data.table(deaths=1:4, year=2001:2004)
)
# Add analyses for different years
p$add_argset(name = "fig_1_2002", year_max = 2002)
p$add_argset(name = "fig_1_2003", year_max = 2003)
# Define analysis function
fn_fig_1 <- function(data, argset) {
  plot_data <- data$deaths[year <= argset$year_max]
  ggplot(plot_data, aes(x=year, y=deaths)) +
    geom_line() +
    geom_point(size=3) +
    labs(title = glue::glue("Deaths from 2001 until {argset$year_max}"))
}
# Apply function to all argsets
p$apply_action_fn_to_all_argsets(fn_name = "fn_fig_1")
# Run analyses
p$run_one("fig_1_2002")Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This package is licensed under the MIT License - see the LICENSE file for details.
