Короткая версия:
Использование inherits
, но будьте осторожны с числами и классов S4.
Longer версия:
В разделе См также страницы is
справки:
наследуется почти всегда эквивалентна есть, как для S4 и не-S4 объектов, и несколько быстрее. Неэквивалентность применяется к классам , у которых есть условные суперклассы, с нетривиальным тестом = в отношении (не распространено и обескуражено): для них есть тесты для отношение, но наследует по определению игнорирует условное наследование для S4 объекты.
В разделе формальных классов страницы inherits
справки:
Аналог наследует для формальных классов есть. Две функции ведут себя с одним исключением: классы S4 могут иметь условное наследование с явным тестом. В этом случае будет проверить условие, но наследует игнорирует все условные суперклассы.
Таким образом, они в основном возвращают одно и то же, но inherits
работает быстрее, поэтому в большинстве случаев это должен быть выбор по умолчанию. (Как отметил Konrad, is
также требует, загружаемый пакета methods
, который может сделать его непригодным для исполнения чувствительных использования Rscript
.)
Значения может отличаться, если вы используете классы S4 с условным наследованием, но это not recommended (см. Раздел «Выбор метода и отправка: детали»), что означает, что он, надеюсь, встречается редко.
Наиболее очевидным местом, где эти две функции отличаются, является проверка целостности целых чисел.
class(1L)
## [1] "integer"
is.numeric(1L)
## [1] TRUE
is(1L, "numeric")
## [1] TRUE
inherits(1L, "numeric")
## [1] FALSE
Вы уверены, что не хотите тег 'r-faq' на этом? –