Подтвердить что ты не робот

Как добавить псевдоним класса, не имеющий общего псевдонима, используя 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?

4b9b3361

Ответ 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
}

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