Другой пакет удаляет мой метод S4 «предвидение» из кандидатов на автозаполнение - PullRequest
1 голос
/ 17 января 2020

Я пишу R-пакет, в котором я реализую свой собственный 'предсказание' generi c и метод S4 для подписи 'apk', который также является классом S4 внутри моего пакета. Я использую Rstudio в качестве редактора и создаю документацию с помощью Roxygen2.

Вся проблема связана с кандидатами на автозаполнение, которые Rstudio показывает, когда я набираю предсказывать после установки и загрузки пакета. Сразу после открытия нового сеанса R, если я наберу предикат , я получу следующие кандидаты: предикат {aPack}, предикат {stats}, Foregnet.glm {stats} и Foregnet.lm {stats}. Обратите внимание, что оба S4 из моего пакета aPack и один из stats отображаются в качестве кандидатов. Это происходит потому, что прямо перед установкой генерика c я импортировал прогноз из статистики , как это предлагается в этом SO-ответе .

Проблема: , когда я загружаю другой пакет с помощью метода S4 предиката , я больше не могу сделать так, чтобы мой S4 отображался как кандидат на автозаполнение. Например, если я загружаю пакет DiceKriging и мой в одном и том же сеансе, я получаю только следующие кандидаты: предикат {DiceKriging}, предикат {stats}, Foregnet.glm {stats}, Foregnet.lm {stats} иgnett.km { DiceKriging}. Как только я загружаю DiceKriging , невозможно отобразить мой S4 в режиме автозаполнения, даже если я загружаю свой пакет снова. Предсказанный метод все еще работает без указания предиката {aPack} системой автозаполнения, однако я хотел бы сделать его видимым, чтобы пользователь непосредственно узнал о доступности моего метода.

Вопрос: как мне изменить мою документацию roxygen, чтобы система автозаполнения запрашивала предикат {aPack} , даже если я загружаю другой пакет с предикатом Метод S4?

Пример минимальной воспроизводимости

#' @title Class: apk model
#' @description To create an apk object, use \link[aPack]{apk}.
#' @slot call Object of class \code{"language"}. User call reminder.
#' @rdname apk-class
#' @import methods
#' @export
setClass("apk", representation(call = "language"), validity = function(object) {T})

#' @title Create an Object of class \code{"apk"}
#' @description Creator function for objects of class \code{"apk"}.
#' @param foo Not used yet.
#' @param ... Not used yet.
#' @export
apk <- function(foo, ...) {
    new("apk")
}

#' @name predict
#' @rdname predict-methods
#' @importFrom stats predict
#' @param object An object to predict from.
#' @param ... Further arguments for methods.
#' @export predict
setGeneric(name = "predict", def = function(object, ...) standardGeneric("predict"))

predict.apk <- function(object, bar,  ...) {
  print("I'm an apk prediction!")
}

#' @title Prediction Method for the apk Class
#' @name predict
#' @rdname predict-methods
#' @aliases predict,apk-method
#' @examples
#' myApk <- apk()
#' predict(myApk)
setMethod("predict", "apk", predict.apk)

GitHub: Я также загрузил проект в GitHub, чтобы вы могли напрямую сделать свой предложенный меняется там, если хотите. Хранилище здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...