Как указать порядок сортировки в Roxygen2?

Использование документации roxygen2 с функцией document devtools автоматически создает поле Collate: в ОПИСАНИИ пакета, независимо от того, необходимо ли загружать файлы библиотеки пакетов в определенном порядке.

Я работаю над пакетом с кучей методов S4 и хочу убедиться, что определения классов загружаются до любых методов или других классов, использующих их, что, как я понимаю, можно сделать со списком Collate, но я не уверен, как указать это в формате документации roxygen2.

В руководстве по roxygen2 упоминается тег @include, но это выглядит например, он может просто включать код в документацию, например, для добавления внешних примеров через флаг @examples. Можно ли это использовать для указания порядка сортировки для методов?


person cboettig    schedule 31.08.2013    source источник
comment
Если поле сортировки уже есть в ОПИСАНИИ, roxygen2 не создает его. Так что я бы сказал, что вы должны сделать заказ, который вы хотите, и его следует уважать. (Я думаю; следовательно, комментарий против ответа).   -  person Tyler Rinker    schedule 31.08.2013
comment
было бы неплохо узнать, верна ли моя интерпретация @import. Также, конечно, было бы неплохо иметь функцию, определяющую порядок сортировки из списка зависимостей файлов, а не прорабатывать его вручную.   -  person cboettig    schedule 31.08.2013
comment
import используется для импорта пакета. Это похоже на перечисление пакета в разделе Зависимости, за исключением того, что он намного чище, поскольку не загрязняет пространство имен пользователя.   -  person Dason    schedule 31.08.2013
comment
И позвольте мне избавить вас от сердечной боли в будущем, сказав, что @importfrom еще лучше, потому что это позволяет избежать конфликтов имен.   -  person Tyler Rinker    schedule 31.08.2013
comment
упс, я хотел сказать, что @include это тег, который я не понимаю, извините за опечатку. Текст изменен выше. Что случилось с тегом @include и как он связан с порядком Collate?   -  person cboettig    schedule 02.09.2013


Ответы (2)


Тег include используется, чтобы указать, что один файл нуждается в другом для работы. (Имя включает, возможно, не лучший выбор, но такова жизнь). Если вы хотите убедиться, что файл B загружается раньше, чем файл A, то убедитесь, что @include B в A. Roxygen позаботится о упорядочении поля сортировки в соответствии с вашими ограничениями.

person hadley    schedule 03.09.2013
comment
блестяще, поэтому include делает именно то, что мне нужно! - person cboettig; 03.09.2013

Я только что понял, что если вы добавите оператор @include вверху вашего файла R, он будет мешать следующему блоку документации roxygen2, если вы не последуете за ним с NULL, например

#' @include something.R
NULL

#' Documenting a function
#'
#" It does something...
#'
#' @param ...
#'
person THK    schedule 26.02.2014
comment
Я считаю полезным включать #' @include file-with-class-definitions.R в заголовок любого блока roxygen, определяющего метод для класса S4, который находится в файле, отличном от определения класса. Таким образом, вы наверняка определите класс до того, как будет определен метод, даже если файл, содержащий определение класса, в алфавитном порядке предшествует имени файла, определяющему метод. Береженого Бог бережет! - person Ken Benoit; 26.02.2019