knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
daff is an R package that can find difference in values between
data.frames
, store this difference, render it and apply this
difference to patch a data.frame
. It can also merge two versions of a
data.frame
having a common parent. It wraps the
daff.js library using the
V8 package.
The diff format is described in https://paulfitz.github.io/daff-doc/spec.html.
Functions:
diff_data
patch_data
read_diff
and write_diff
render_diff
merge_data
You can install the development version of daff from GitHub with:
# install.packages("devtools") devtools::install_github("edwindj/daff")
Calculate the difference between a reference and a changed data.frame
library(daff) y <- iris[1:3,] x <- y x <- head(x,2) # remove a row x[1,1] <- 10 # change a value x$hello <- "world" # add a column x$Species <- NULL # remove a column patch <- diff_data(y, x) # write a patch to disk write_diff(patch, "patch.csv")
render_diff(patch)
will generate the following HTML page:
Patch a data.frame
using a diff generated with diff_data
.
# read a diff from disk patch <- read_diff("patch.csv") # apply patch y_patched <- patch_data(y, patch)
Merge two data.frame
s that have diverged from a common parent
data.frame
.
parent <- a <- b <- iris[1:3,] a[1,1] <- 10 b[2,1] <- 11 # succesful merge merge_data(parent, a, b) parent <- a <- b <- iris[1:3,] a[1,1] <- 10 b[1,1] <- 11 # conflicting merge (both a and b change same cell) merged <- merge_data(parent, a, b) merged #note the conflict #find out which rows contain a conflict which_conflicts(merged)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.