Я хочу написать функцию, которая возвращает 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}.
Любые советы очень ценятся! Спасибо!