Является ли roxygen2 только для документирования пакетов R или также для проектов R?

У меня есть вопрос о пакете "roxygen2":

Я видел много руководств, в которых он используется для документации пакетов (например, основной "object documentation", автор Hadley Wickham)

Так что, если у меня есть код R, который не является пакетом, скажем, проектом R? Можете ли вы также документировать проекты R с помощью roxygen2?

Я все еще мог запустить функцию package.skeleton(name='RoxygenSkeleton', code_files = "Roxygen.R", force=TRUE) для создания базовой структуры пакета, и были созданы файлы .Rd. Но я бы хотел получить хороший результат в формате HTML или PDF...


person Skybrush    schedule 17.08.2016    source источник
comment
Поскольку все, что вам нужно, это сгенерировать файлы HTML, вы можете просто создать файлы *.Rd, а затем использовать tools::Rd2HTML. Это немного по-спартански, но соответствует базовым требованиям.   -  person r2evans    schedule 17.08.2016
comment
@r2evans «генерировать файлы *.Rd» — как? Насколько я понимаю, это невозможно, используя только общедоступный API roxygen2; см. мой ответ.   -  person Konrad Rudolph    schedule 17.08.2016
comment
Я думаю, что пытался сделать что-то похожее на то, что вы пытаетесь сделать несколько лет назад. Никогда полностью не заканчивал задание, но, может быть, оно вас заинтересует? github.com/Dasonk/flydoc И по крайней мере метод, используемый в функции flyhelp, может помочь получить вы там? github.com/Dasonk/flydoc/blob/master/R/flyhelp. R С учетом сказанного, на данный момент коду четыре года, поэтому я не даю никаких гарантий, что что-то из этого все еще работает.   -  person Dason    schedule 17.08.2016
comment
Поскольку (согласно вашему обсуждению с @hadley) без структуры пакета невозможно, я подумал, что использование Rd2HTML будет соответствовать последнему комментарию (мне бы хотелось получить хороший вывод в HTML), учитывая, что OP имеет уже создал скелетную структуру пакета.   -  person r2evans    schedule 17.08.2016
comment
@Dason, я думаю, ты должен написать ответ на это.   -  person Konrad Rudolph    schedule 17.08.2016
comment
@KonradRudolph Может быть, позже, но на самом деле я не просматривал этот код четыре года, поэтому я не совсем понимаю, что я сделал и как я заставил его работать.   -  person Dason    schedule 17.08.2016
comment
Большое спасибо всем за ваш вклад! Я очень ценю это. @ r2evans Да, я тоже думал об использовании этого обходного пути. Кажется, что для каждой функции создается собственный файл .Rd... поэтому документация может быть сначала немного сгруппирована, а затем вы можете вручную объединить все файлы вместе.   -  person Skybrush    schedule 22.08.2016
comment
@Dason - спасибо, я проверю вашу посылку. Кажется, хорошая идея для упаковки.   -  person Skybrush    schedule 22.08.2016


Ответы (1)


Как объяснялось в другом месте, начиная с roxygen2 6.0, для анализа документированных исходных файлов R вне пакетов работает следующее.

source_env = roxygen2::env_file(sourcefile)
rd_blocks = roxygen2::parse_file(sourcefile, source_env)
help_topics = roxygen2::roclet_process(roxygen2::rd_roclet(), rd_blocks, source_env, dirname(sourcefile))
rd_code = lapply(help_topics, format)
person Konrad Rudolph    schedule 17.08.2016
comment
Спасибо Конрад! При использовании Roxygen с проектом я увидел, что он только сгенерировал скелет (например, man-репозиторий с .Rd в нем), но не совсем правильно записал мои комментарии в соответствующие файлы .Rd. Возможно, это связано с использованием проекта, а не пакета. Спасибо, что показали нам обходной путь. - person Skybrush; 22.08.2016