27

我正在制作我的第一个包rlandscape,使用 Roxygen2 并尝试遵循普通的 Roxygen 小插图,因为 Roxygen2 没有。

正如在小插图(第 3 页)中一样,我创建了一个名为的文件,该文件rlandscape-package.R只包含包文档。在小插曲中,他们说

每个 Roxygen 描述块必须后跟一个语句,甚至是描述文件或包的标题材料以代替特定功能。roxygen() 作为 NOOP(空语句)提供,以代替此类情况。

但是如果我按照描述块roxygen()调用package.skeletonproduces 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

这似乎运行成功,但说明文件附加了“整理”字段,但与package.skeleton创建的内容相比没有变化。为什么描述文件的其余部分没有更新?

4

1 回答 1

32

roxygen2按预期工作,但是当我第一次使用它来记录包时,我遇到了同样的困惑。要理解的重要一点是混合中有几个不同的包描述文件。

  • 当处理 roxygen 标记时rlandscape-package.R,它会rlandscape-package.Rd在源包的 man 目录中生成一个文件。这反过来会生成您在键入?rlandscape或时看到的文档?"rlandscape-package"

  • 源代码树顶层目录中的DESCRIPTION文件是一个完全独立的野兽。尽管它恰好生成了一个您可以看到的帮助文件(通过help(package="rlandscape")),但它在指导软件包生产方面还有许多其他更重要的角色。roxygen2触及/影响它的唯一方法是该函数(在您的包时执行)将与预先存在的文件中的 Collat​​e 字段执行合并(如本 pdf的第 10 页所述)。collate_roclet()roxygenize()DESCRIPTION

主要的带回家的信息是,即使使用 roxygen2,如果您想对DESCRIPTION文件进行更改,您也需要直接编辑它。

于 2012-03-02T20:39:43.377 回答