Я уже несколько раз сталкивался со следующей проблемой.
Допустим, у вас есть два класса, 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
. Итак, для справки, вот мои выводы.