Я столкнулся с следующей проблемой уже несколько раз.
Скажем, у вас есть два класса: classA
и classB
, описанные в следующих файлах classA.R
:
#' the class classA
#'
#' This is a class A blabla
#' \section{Slots}{\describe{\item{\code{A}}{a Character}}}
#' @ name classA
#' @rdname classA
#' @exportClass classA
setClass("classA",representation(A="character"))
И classB.R
#' the class classB
#'
#' This is a class B blabla
#' \section{Slots}{\describe{\item{\code{B}}{an object of class A}}}
#' @ name classB
#' @rdname classB
#' @exportClass classB
setClass("classB",representation(B="classA"))
Я полагал, что эти файлы были прочитаны в алфавитном порядке на roxygen2
, но это не так. Если я попытаюсь создать пакет, я могу получить следующую ошибку:
roxygenize("./myExample")
Error in getClass(Class, where = topenv(parent.frame())) :
"ClassA" is not a defined class
Как я могу убедиться, что roxygenize()
знает, в каком порядке читать файлы, т.е. какое определение класса следует читать перед другим?
Примечание. Я знаю, что я ответил на свой вопрос. Это потому, что я столкнулся с этой проблемой довольно часто и понял правильный способ сделать это, посмотрев код roxygen2
. Так что для справки, вот мои выводы.