R: Есть ли способ найти функции R, которые являются тестами объектов указанного класса? - PullRequest
0 голосов
/ 29 апреля 2018

Существует ряд тестов, которые применительно к объекту данного класса выдают информацию об этом объекте. Рассмотрим объекты класса «функция». Функции is.primitive() или is.closure(), или (от rlang) is_primitive_eager() или is_primitive_lazy() предоставляют информацию о функциональном объекте. Однако использование methods(class = "function") (с загруженным rlang) не возвращает ни одну из следующих функций:

[1] as.data.frame as.list coerce coerce<- fortify head latex plot print tail.

Использование extends(class1 = "function", maybe = TRUE, fullInfo = TRUE) показывает два суперкласса: «OptionalFunction» и «Возможный метод». Использование completeClassDefinition(Class = "function", doExtends=TRUE) обеспечивает 23 подкласса. Тем не менее, мне кажется (хотя я не уверен в этом), что все или почти все супер- и подклассы из этих двух функций относятся к классам S4, которые я обычно не использую. Одним из этих подклассов является «genericFunction», поэтому я попытался применить его к базовой функции R, которая, как я знал, является универсальной. Хотя is(object=plot, class2 = "genericFunction") возвращает TRUE и plot() предшествует классам S4, в базе R нет теста "is.generic", но в пакете методов есть тест "isGeneric", который подсказывает мне, что plot() имеет был переписан как объект S4.

В любом случае, существует множество очевидных потенциальных свойств функций, например, являются ли они общими, для которых нет is.<whatever> тестов, которые я могу найти, и я хотел бы знать, есть ли другие способы, которыми я можете искать их, например, в пакетах.

Более общий способ задать тот же вопрос - есть ли способ идентификации функций, которые будут принимать объекты указанного класса и не возвращать ошибку или бессмыслицу. Если это так, я мог бы взять список функций в рекомендованных пакетах или в некотором указанном пакете и проверить, возвращает ли каждая из них разумный ответ при передаче функции. Это не совсем ответ - такой метод, например, вернул бы TRUE для quote () - но по крайней мере уменьшил бы проблему до размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...