Как получить прямой доступ к методу S3 в пакете roxygen2 R

Я пишу свой первый пакет с помощью roxygen2. Пакет реализует более быструю версию pcdtest() из пакета plm. Таким образом, я вызываю в своем пакете:

merr <- resid(mod)

Пакет plm реализует метод S3 для resid. Он экспортирует его в пространство имен plm следующим образом:

S3method("residuals", "panelmodel")
S3method("residuals", "plm")

Чтобы иметь возможность использовать resid(), я импортирую весь пакет plm через

#' @import plm

Есть ли способ получить доступ к правильному методу напрямую через ::? Или импортировать только метод? Или другой более приятный обходной путь?

Большое спасибо, Михал


person Michal Kvasnička    schedule 20.09.2015    source источник
comment
Возможно importFrom(plm, some_method.some_class) в вашем NAMESPACE файле.   -  person nrussell    schedule 20.09.2015
comment
Это то, что я ожидал, но я не смог заставить это работать. Функция residuals.panelmodel() не экспортируется -- она ​​экспортируется как метод S3. Как я могу получить к нему доступ? (На самом деле я бы предпочел обращаться к нему напрямую, даже без директивы importFrom. Тем не менее, импорт одной функции, возможно, лучше, чем импорт всего пакета.)   -  person Michal Kvasnička    schedule 21.09.2015


Ответы (1)


Поздно, но... Пакеты не нужно прикреплять, чтобы их зарегистрированные методы S3 были доступны, их просто нужно загрузить. Поэтому вам не обязательно import(plm) (который загружает и прикрепляет пакет), а только importFrom(plm, somefunction) (который загружает пакет, но прикрепляет только эту функцию), любую функцию или символ, объявленный как export(somefunction) в plm NAMESPACE.

person Iñaki Úcar    schedule 09.01.2020