README.md

freezr: A simple, transparent reproducibility tool

If you are a data analyst in a scientific or scholarly field, then you've likely experienced the tension between reproducibility demands and fast-changing custom analysis scripts. freezr is an R package meant to alleviate this tension. It helps you archive your current analysis in a snap so you can move on to the next question or approach. In a single line of code, it will helpfully:

For bigger projects, freezr includes a simple "inventory" system to keep track of saved data. This allows you to load data into a downstream script without hard-coding paths, which is particularly useful when saving intermediates inside of timestamped freezr archives.

Getting started

You can install freezr using the devtools package:

install.packages("devtools") # installs devtools
devtools::install_github("ekernf01/freezr") # installs freezr

Then you can start freezing code immediately. The following line will run my_functions.R and then my_script.R, saving them and their results to ~/my_project/results/<timestamp>.

library(freezr)
freezr::freeze( analyses_to_run = c( "my_functions.R", "my_script.R" ),
                destination = file.path( "~", "my_project", "results" ) )

Features

Other reproducibility tools

I recently found out about recordr, which is very similar to freezr. I haven't tried recordr yet, but I know it is quite sophisticated and has some great interactive features. As far as I can see, the only functionality unique to freezr is the "inventory" system, which helps pass data between scripts. Here are some other tools relating to reproducible research in R. These solve problems that overlap with the domain of freezr, but none has the same purpose or functionality.

One inevitable question people ask is why we can't just use Git. Here's why I view Git as complementary to freezr, rather than capable of replacing freezr.

FAQ

Type ?freezr::freeze (core functionality) or ?freezr::inventory_add (extra tools for bigger projects).

I'm sorry! This happens when freezr calls sink() and gets interrupted before it can clean up after itself. Try running freezr::sink_reset().

I'm working on a vignette and on linking freezr archives to the commit on which they were built.

Citation

freezr is not published in any academic-style manuscripts. If freezr helped you in your work, you can refer to this repository, https://github.com/ekernf01/freezr .



ekernf01/freezr documentation built on Feb. 8, 2022, 5:22 a.m.