roxygen2 не полностью обновляет файл описания


Я делаю свой первый пакет rlandscape, используя Roxygen2 и пытаясь следовать простой виньетке Roxygen, поскольку у Roxygen2 ее нет.

Как и в виньетке (стр. 3), я создал файл под названием rlandscape-package.R, который не содержит ничего, кроме документации пакета. В виньетке говорится:

За каждым блоком описания Roxygen должен следовать оператор, даже материал заголовка, описывающий файл или пакет вместо определенного функция. roxygen () предоставляется как noop (оператор null), чтобы стоять в для таких случаев.

Но если я следую за блоком описания с roxygen() вызовом package.skeleton производит Error in eval(expr, envir, enclos) : could not find function "roxygen". Поэтому я попытался полностью оставить вызов roxygen(), а также заменить его на NA, оба из которых, похоже, дают одни и те же результаты: package.skeleton() успешно работает (включая rlandscape-package.R в качестве одного из аргументов code_files), и я могу тогда roxygenize

> roxygenize("rlandscape", roxygen.dir = "rlandscape")
Updating collate directive in  /Users/Gregor/Dropbox/rlandscape/rlandscape/DESCRIPTION 
Updating namespace directives
Writing plot.landscape.Rd
Writing rland.Rd
Writing rland.gui.Rd
Writing makePoints.Rd
Writing rCluster.Rd
Writing rlandscape-package.Rd
Writing rlandscape.Rd

Который, кажется, работает успешно, но файл описания имеет поле " Collate прилагается, но в остальном не изменяется от того, что создано package.skeleton. Почему остальная часть файла описания не обновляется?

1 23

1 ответ:

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

  • Когда разметка roxygen в rlandscape-package.R обрабатывается, она создает файл rlandscape-package.Rd в каталоге man вашего исходного пакета. Это, в свою очередь, создает документацию, которую вы видите при вводе ?rlandscape или ?"rlandscape-package".

  • Тот самый DESCRIPTION файл в верхнем каталоге вашего исходного дерева-это совершенно отдельный зверь. Несмотря на то, что он создает файл справки, который вы можете видеть (через help(package="rlandscape")), у него есть много других более важных ролей в руководстве производством пакетов. единственный способ, которым он затрагивается/затрагивается roxygen2 , заключается в том, что функция collate_roclet() (выполняемая, когда вы roxygenize() Ваш пакет) будет выполнять слияния с полем Collate в уже существующем файле DESCRIPTION (как описано на стр. 10 из этого pdf ).

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