Я знаю, что есть вполне a несколько вопросов, похожих на этот, но после прочтения я все еще не могу заставить мой экспорт S3 работать.
Чтобы немного рассказать об этом, я хочу предоставить вспомогательные методы, которые агрегируют списки параметров для использования в более подробных c методах. Наиболее обобщенной c является функция с именем setup
. По сути, он возвращает список своих вызовов с class = c("setup", "list")
.
. Тогда у меня есть набор методов, например setup_foo
. Существует setup_foo.setup
для работы с предыдущим объектом, а также setup_foo.default
, который сначала вводит свои данные через setup
, а затем вызывает setup_foo
для промежуточного результата. Все это немного надумано, но в результате я могу собирать, проверять и повторно использовать аргументы, которые мне нужны, в последующих функциях, а также изменять указанные c на лету.
Теперь актуальная проблема. Я экспортирую setup
, generi c setup_foo
и методы setup_foo.default
и setup_foo.setup
. Мое NAMESPACE выглядит так:
S3method(setup_foo, setup)
S3method(setup_foo, default)
export(setup)
export(setup_foo)
Я могу нормально вызывать функцию setup
, и она возвращает ожидаемый объект. Если я пытаюсь вызвать setup_foo
, либо для предыдущего объекта, либо в качестве вызова по умолчанию, при вызове UseMethod
появляется следующая ошибка:
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'setup_foo.[class]' of mode 'function' was not found
Я могу найти методы через getS3method
и получить к ним доступ с помощью :::
, но не с ::
. Я также экспортирую свой собственный метод S3 для plot
, и это работает без проблем. Может ли кто-нибудь указать мне правильное направление, как это можно исправить?