comparers: Example Object and Side Effect Comparers#


Example two-argument functions to compare direct or indirect effects of two test descriptors (see P and R). These can be passed as value_comparer and sides_comparer to E.


ignore_differences(x, y)

sides_similar(x, y)



prototype or part thereof


object under scrutiny or part thereof


Notable built-in (base R) comparers include identical (the strictest possible) and all.equal (can ignore, amongst others, round-off errors; note that it is an S3 generic).

ignore_differences is a dummy comparer that always returns TRUE. Hence, it does not discriminate between anything.

sides_similar is useful when comparing side effect lists. It defines the following semantics for the prototypical values:

  • non-existent, NULL, or FALSE – a side effect must not occur,

  • NA – ignore whatsoever,

  • TRUE – a side effect occurs, but the details are irrelevant (e.g., ‘some warning’ as opposed to "NaNs produced")

  • otherwise – a character vector with message(s) matched exactly.

You can define any comparers of your own liking: the possibilities are endless. For example:

  • a comparer for side effects based on regular expressions or wildcards (e.g., ".not converged.*"),

  • a comparer that tests whether all elements in a vector are equal to TRUE,

  • a comparer that verifies whether each element in a vector falls into a specified interval,

  • a comparer that ignores all the object attributes (possibly in combination with other comparers),

and so forth.


Each comparer should yield TRUE if the test condition is considered met or anything else otherwise. However, it is highly recommended that in the latter case, a single string with a short summary of the differences be returned, as in all.equal.


Marek Gagolewski

See Also#

The official online manual of realtest at