R: Определите, есть ли у метода S3 функция для указанного класса - PullRequest
1 голос
/ 17 октября 2019

Я хочу написать функцию, которая возвращает TRUE или FALSE в зависимости от того, поддерживает ли метод S3 определенный класс. Например, если у меня есть фрейм данных с классом "data.frame" и функцией транспонирования t(), я хочу узнать, существует ли метод для класса "data.frame".

> my_checking_function(class = "data.frame", function = t)
TRUE

Сложная частьявляется то, что я хочу сделать это для метода, который не прикреплен. В частности, я хочу проверить, есть ли для пакета модель tidier пакета {метла} (он же метод tidy()). Эта функция будет в пакете, поэтому я не могу прикрепить {метлу} перед проверкой. Возможно, что-то вроде этого, где пакет {broom} не подключен:

> my_checking_function(class = "lm", function = broom::tidy)
TRUE
> my_checking_function(class = "not_a_supported_class", function = broom::tidy)
FALSE

Я нашел некоторые функции, которые могут работать, но я не могу заставить их работать без предварительного подключения пакета {broom},utils::.S3methods() sloop::s3_methods_class()

В utils::.S3methods() вы можете указать среду для поиска. Но я не мог найти способ указать среду, которая была пространством имен пакета {broom}.

Любые советы очень ценятся! Спасибо!

...