Как добавить специфичный для класса псевдоним без универсального псевдонима с помощью Roxygen2? - PullRequest
13 голосов
/ 21 января 2012

Простой пример: я создал расширение для show, которое является базовым методом S4.Я не хочу вызывать ответвление неоднозначности путем повторного документирования show в моем пакете, и я также хочу объединить документацию моего расширения до show в документации для нового класса, myPkgSpClass, добавивпсевдоним для show,myPkgSpClass-method.

#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

Проблема, с которой я сталкиваюсь, заключается в том, что это приводит к серьезному предупреждению при сборке документации от roxygen2, Rd files with duplicated alias 'show':, поскольку в этом пакете имеется более одного расширения класса до show,и roxygen2 автоматически добавил общий термин в списке псевдонимов ко всем соответствующим *-class.Rd файлам:

\alias{show}
\alias{show,myPkgSpClass-method}

Но я думаю, что я не хочу универсальный псевдоним ни в одном из примеров, потому что онвызовет необходимость устранения неоднозначности между show в моем пакете и базой show.Эта проблема также относится к другим методам S4, расширенным из других пакетов, кроме show.

Если я отмечу все методы класса для одного и того же файла .Rd, то предупреждение исчезнет, ​​но неоднозначность останется,потому что псевдоним show все еще добавляется автоматически для этой записи документа.Если я вручную удаляю \alias{show} из файла .Rd, то проблема кажется решенной, никаких предупреждений во время roxygen или R CMD check pkgname.Так как же заставить Roxygen2 не добавлять универсальный псевдоним?

Другой фон:

Это конкретный вопрос, построенный из предыдущего вопроса об экспорте / документировании расширений S4 для базовых методов: Нужно ли экспортировать расширения базовых методов в пакет R?Последствия для документации?

Это более конкретно, чем следующие вопросы, касающиеся документирования методов / классов S4 с использованием Roxygen2, и не охватывается ими:

Как правильно документировать методы S4использование roxygen2

Как правильно документировать слоты класса S4 с использованием Roxygen2?

1 Ответ

2 голосов
/ 21 марта 2014

Кажется исправленным в roxygen2_3.1.0:

#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

создает myPkgSpClass-class.Rd:

\docType{methods}
\name{show,myPkgSpClass-method}
\alias{show,myPkgSpClass-method}
\usage{
\S4method{show}{myPkgSpClass}(object)
}
\arguments{
  \item{object}{Any R object}
}

Как уже сказал Хэдли, вам больше не нужно явно устанавливатьпсевдоним или имя rd, например:

#' my title
#' @export
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

сгенерирует show-myPkgSpClass-method.Rd:

\docType{methods}
\name{show,myPkgSpClass-method}
\alias{show,myPkgSpClass-method}
\title{my title}
\usage{
\S4method{show}{myPkgSpClass}(object)
}
\arguments{
  \item{object}{Any R object}
}
\description{
my title
}

Обратите внимание, что в этом случае вы должны задать описание.Он не будет генерировать страницу документа, если запись в документации пуста.

...