Description
Track Changes in Data.
Description
A framework that allows for easy logging of changes in data. Main features: start tracking changes by adding a single line of code to an existing script. Track changes in multiple datasets, using multiple loggers. Add custom-built loggers or use loggers offered by other packages. <doi:10.18637/jss.v098.i01>.
README.md
A brief overview of lumberjack
Lumberjack separates concerns between data processing and monitoring the process by allowing R programmers (analysts) to declare what objects to track, and how to track them.
Add logging capabilities to existing analyses scripts
Start tracking changes by adding a single line of code to an existing script.
# contents of 'script.R'
mydata <- read.csv("path/to/my/data.csv")
# add this line after reading the data:
start_log(mydata, logger=simple$new())
# Existing data analyses code here...
Next, run the script using lumberjack::run_file()
, and read the logging info.
library(lumberjack)
run_file("script.R")
read.csv("mydata_simple.csv")
Every aspect of the logging process can be customized, including output file locations and the logger.
Interactive logging with the lumberjack not-a-pipe operator.
out <- mydata %L>%
start_log(logger = simple$new()) %L>%
transform(z = 2*sqrt(x)) %L>%
dump_log(file="mylog.csv")
read.csv("mylog.csv")
Loggers included with lumberjack
logger | description |
---|---|
simple | Record whether data has changed or not |
cellwise | Record every change in every cell |
expression_logger | Record the value of user-defined expressions |
filedump | Dump data to file after each change. |
Extend with your own loggers
A logger is a reference object (either R6 or Reference Class) with the following mandatory elements.
add(meta, input, output)
A method recording differences between in- and output.dump(...)
A method dumping logging info.label
, A slot for setting a label.
There is also an optional element:
stop(...)
A method that will be called before removing a logger.
More information
install.packages("lumberjack")
library(lumberjack)
vignette("using_lumberjack", package="lumberjack")