Is there any difference between testing isTRUE(all.equal(x, y))
and identical(x, y)
?
The help page says:
Don't use 'all.equal' directly in 'if' expressions — either use 'isTRUE(all.equal(....))' or 'identical' if appropriate.
but that "if appropriate" leaves me in doubt. How do I decide which of the two is appropriate?
all.equal
tests for near equality, while identical
is more exact (e.g. it has no tolerance for differences, and it compares storage type). From ?identical:
The function ‘all.equal’ is also sometimes used to test equality this way, but was intended for something different: it allows for small differences in numeric results.
And one reason you would wrap all.equal
in isTRUE
is because all.equal
will report differences rather than simply return FALSE
.