merge_data provides a three-way merge: suppose two versions are based on a common
version, this function will merge tables a and b.
merge_data(parent, a, b)data.frame
data.frame changed version of parent
data.frame other changed version of parent
merged data.frame. When a merge has conflicts the columns of conflicting changes
are of type character and contain all three values.
If both a and b change the same table cell with a different value, this results in a
conflict. In that case a warning will be generated with the number of conflicts.
In the returned data.frame of a conflicting merge columns with conflicting values are of type
character and contain all three values coded as
(parent) a /// b
parent <- a <- b <- iris[1:3,]
a[1,1] <- 10
b[2,1] <- 11
# succesful merge
merge_data(parent, a, b)
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 10.0 3.5 1.4 0.2 setosa
#> 2 11.0 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
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)
#> Warning:
#> 1 conflict(s) detected!
#> Conflicting values are noted with '(((parent))) a /// b'.
#> Use 'which_conflict' to find out which rows contain conflicting values.
merged #note the conflict
#> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1 ((( 5.1 ))) 10 /// 11 3.5 1.4 0.2 setosa
#> 2 4.9 3.0 1.4 0.2 setosa
#> 3 4.7 3.2 1.3 0.2 setosa
#find out which rows contain a conflict
which_conflicts(merged)
#> [1] 1