See R's {drake}. It allows you to define a reproducible pipeline
plan <- drake_plan(
raw_data = readxl::read_excel(file_in("raw_data.xlsx")),
data = raw_data %>%
mutate(Species = forcats::fct_inorder(Species)),
hist = create_plot(data),
fit = lm(Sepal.Width ~ Petal.Width + Species, data),
report = rmarkdown::render(
knitr_in("report.Rmd"),
output_file = file_out("report.html"),
quiet = TRUE
)
)
# call the pipeline
make(plan)
The great thing about drake is you that you can reload any of raw_data
, data
, hist
, fit
, report
at any point. And if you change part of the code and make(plan)
and {drake} will figure out which has change and just run that.