Ответ 1
Общая информация о классах roxygen и S4
Первая версия roxygen имела тег @slot
, но эта версия больше не поддерживается в пользу roxygen2
. Поэтому он не рекомендовал использовать эту старую версию.
Пока что roxygen2
не имеет реальной поддержки для классов S4. Хэдли прилагает все усилия, чтобы это произошло в roxygen3
(https://github.com/hadley/roxygen3). Если вы хотите сделать снимок и почувствовать себя храбрым: установите roxygen3
из github и попробуйте версию для разработки. Обратите внимание, что эта версия в конечном итоге будет включена в roxygen2
, поэтому со временем проблема решится сама.
Что касается вашего рабочего процесса:
Мне лично всегда сложно сочетать использование roxygen и вручную написанных файлов .Rd. Но если вам нужно, вы можете отправить вывод roxygen в другой каталог, используя аргумент roxygen.dir
. Таким образом, вы можете скопировать все, что захотите, в каталог пакета, не перезаписывая записанные вручную файлы.
roxygenise("./mypackage", roxygen.dir="./myroxygendir")
Что бы я сделал, просто используйте roxygen2
для записи файлов Rd для ваших классов, как описано в потоке, на который вы ссылаетесь. Вам не нужно добавлять их вручную, как вы верите по неизвестной причине. Вы просто используете #'
, чтобы указать Rd-блок, как всегда, и использовать все, что указано в потоке, к которому вы ссылаетесь. Если вы хотите сделать слоты отдельным разделом, вы можете сделать это с помощью тега @section
, как в приведенном ниже примере.
Пример того, как добавить слоты на данный момент, используя roxygen2
:
#' The MY class
#'
#' This class blabla yadayada
#'
#'@section Slots:
#' \describe{
#' \item{\code{aslot}:}{Object of class \code{"numeric"}, containing
#'whatever and a bit more}
#' \item{\code{anotherslot}:}{Object of class \code{"character"}, containing
#' strings.}
#' }
#'
#' @note Yes, you can add notes
#' @name MY
#' @rdname MY
#' @aliases MY-class
#' @exportClass MY
#' @author Joris Meys
setClass("MY",
representation=representation(aslot="numeric",
anotherslot="character"
)