Есть ли любое различие между тестированием isTRUE(all.equal(x, y))
и identical(x, y)
?
Страница справки говорит:
Не используйте 'all.equal' непосредственно в 'если' выражения - любое использование 'isTRUE (all.equal (....))' или 'идентичный' при необходимости.
но это, "если соответствующий" оставляет меня в сомнении. Как я решаю, какой из этих двух является соответствующим?
all.equal
тесты на почти равенство , в то время как идентичный
является более точным (например, он не допускает различий и сравнивает тип хранилища). Из? Идентично:
Функция all.equal также иногда используется для проверки равенства путь, но был предназначен для чего-то другое: позволяет различия в числовых результатах.
И одна из причин, по которой вы должны заключить all.equal
в isTRUE
, заключается в том, что all.equal
сообщит о различиях, а не просто вернет ЛОЖЬ
.
идентичный
более суетлив. Например:
> identical(as.double(8), as.integer(8))
[1] FALSE
> all.equal(as.double(8), as.integer(8))
[1] TRUE
> as.double(8) == as.integer(8)
[1] TRUE