Как экспортировать S3-метод, чтобы он был доступен в пространстве имен? - программирование
Подтвердить что ты не робот

Как экспортировать S3-метод, чтобы он был доступен в пространстве имен?

Я создаю пакет, и для методов S3 я их экспортирую с помощью

##' @method predict myclass
##' @export
predict.myclass <- function(object,...) { }

Теперь, когда я загружаю пакет, predict работает на объекте класса myclass, но функция predict.myclass не экспортируется. В NAMESPACE я получаю запись S3method(predict,myclass). Итак, есть ли способ экспортировать predict.myclass, чтобы пользователь получил код predict.myclass, когда он (она) пишет predict.myclass в консоли?

4b9b3361

Ответ 1

Мой ответ: "Не делай этого". Пользователь может methods(predict); getAnywhere('predict.myclass') или mypackage:::predict.myclass. Там кривая обучения для пользователя, но освоение этого с помощью вашего метода помогает пользователю перемещаться по всем методам. Причины не экспортировать метод в том, что он не предназначен для непосредственного вызова, и он загромождает путь поиска ненужными символами (каждый символ, набранный в приглашении, например, ls(), должен быть найден, просматривая объекты на все среды, возвращаемые search(), а пользовательские пакеты, подобные вашим, находятся между началом поиска и разрешением имен этих часто используемых функций).