compare is similar to base::all.equal(), but shows you examples of where the failures occured.

compare(x, y, ...)

# S3 method for default
compare(x, y, ..., max_diffs = 9)

# S3 method for character
compare(x, y, check.attributes = TRUE, ...,
  max_diffs = 5, max_lines = 5, width = cli::console_width())

# S3 method for numeric
compare(x, y, tolerance = .Machine$double.eps^0.5,
  check.attributes = TRUE, ..., max_diffs = 9)

# S3 method for POSIXt
compare(x, y, tolerance = 0.001, ..., max_diffs = 9)

Arguments

x, y

Objects to compare

...

Additional arguments used to control specifics of comparison

max_diffs

Maximum number of differences to show

check.attributes

If TRUE, also checks values of attributes.

max_lines

Maximum number of lines to show from each difference

width

Width of output device

tolerance

Numerical tolerance: any differences smaller than this value will be ignored.

Examples

# Character ----------------------------------------------------------------- x <- c("abc", "def", "jih") compare(x, x)
#> Equal
y <- paste0(x, "y") compare(x, y)
#> 3/3 mismatches #> x[1]: "abc" #> y[1]: "abcy" #> #> x[2]: "def" #> y[2]: "defy" #> #> x[3]: "jih" #> y[3]: "jihy"
compare(letters, paste0(letters, "-"))
#> 26/26 mismatches #> x[1]: "a" #> y[1]: "a-" #> #> x[2]: "b" #> y[2]: "b-" #> #> x[3]: "c" #> y[3]: "c-" #> #> x[4]: "d" #> y[4]: "d-" #> #> x[5]: "e" #> y[5]: "e-"
x <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus tincidunt auctor. Vestibulum ac metus bibendum, facilisis nisi non, pulvinar dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " y <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus tincidunt auctor. Vestibulum ac metus1 bibendum, facilisis nisi non, pulvinar dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " compare(x, y)
#> 1/1 mismatches #> x[1]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> x[1]: ncidunt auctor. Vestibulum ac metus bibendum, facilisis nisi non, pulvinar #> x[1]: \n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " #> y[1]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> y[1]: ncidunt auctor. Vestibulum ac metus1 bibendum, facilisis nisi non, pulvina #> y[1]: r\n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. "
compare(c(x, x), c(y, y))
#> 2/2 mismatches #> x[1]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> x[1]: ncidunt auctor. Vestibulum ac metus bibendum, facilisis nisi non, pulvinar #> x[1]: \n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " #> y[1]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> y[1]: ncidunt auctor. Vestibulum ac metus1 bibendum, facilisis nisi non, pulvina #> y[1]: r\n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " #> #> x[2]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> x[2]: ncidunt auctor. Vestibulum ac metus bibendum, facilisis nisi non, pulvinar #> x[2]: \n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. " #> y[2]: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus\n ti #> y[2]: ncidunt auctor. Vestibulum ac metus1 bibendum, facilisis nisi non, pulvina #> y[2]: r\n dolor. Donec pretium iaculis nulla, ut interdum sapien ultricies a. "
# Numeric ------------------------------------------------------------------- x <- y <- runif(100) y[sample(100, 10)] <- 5 compare(x, y)
#> 10/100 mismatches (average diff: 4.46) #> [22] 0.678 - 5 == -4.32 #> [40] 0.217 - 5 == -4.78 #> [41] 0.680 - 5 == -4.32 #> [48] 0.991 - 5 == -4.01 #> [62] 0.274 - 5 == -4.73 #> [64] 0.336 - 5 == -4.66 #> [77] 0.377 - 5 == -4.62 #> [81] 0.528 - 5 == -4.47 #> [94] 0.846 - 5 == -4.15 #> ...
x <- y <- 1:10 x[5] <- NA x[6] <- 6.5 compare(x, y)
#> 2/10 mismatches (average diff: 0.5) #> [5] NA - 5 == NA #> [6] 6.5 - 6 == 0.5
# Compare ignores minor numeric differences in the same way # as all.equal. compare(x, x + 1e-9)
#> Equal