Я принимаю существующий пакет. Пакет был написан с документацией .Rd до того, как R потребовал явного экспорта функций.
Моим первым шагом было преобразование документации в roxygen с помощью Rd2roxygen (большое спасибо Yihui и Hadley за этот пакет!).
Но теперь пакет не работает, потому что не экспортируются функции. Я бы предпочел просто экспортировать все функции по умолчанию. На данный момент кажется, что мой общий подход будет состоять в том, чтобы определить регулярное выражение, которое можно найти для каждой функции ( ##' @return
будет хорошей целью), и вставить ##' @export
в строку над ним,
В псевдокоде:
for all files in the `R/` directory{
for each line starting in `##' @return`{
insert `##' @export` in the preceeding line
}}
Результатом будет замена:
##' @return something
с участием
##' @export
##' @return something that varies with each function
Получить список функций и добавить их в NAMESPACE не получится, потому что devtools::document("mypackage")
перезапишет его, если @export
не будет в коде roxygen над каждой функцией.
Вопрос: как наиболее эффективно добавить @export в документацию roxygen для каждой функции в пакете?
Еще лучшей альтернативой будет анализ операторов NAMESPACE
и export
и method
соответственно.
Rd2roxygen
и что исправления приветствуются. (См.package?Rd2roxygen
) Так что, если вы получите хороший ответ, вам следует рассмотреть возможность отправки его в виде патча. - person GSee   schedule 29.01.2013