Как добавить псевдоним класса, не имеющий общего псевдонима, используя Roxygen2?
Простым примером является то, что я создал расширение для 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
Кажется, исправлено в roxygen2_3.1.0:
#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })
создает класс myPkgSpClass.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
}
Обратите внимание, что в этом случае вам нужно установить описание. Он не будет генерировать страницу документа, если запись в документации пуста.