2012-03-02 40 views
22

我正在做我的第一个包rlandscape,使用Roxygen2并试图遵循普通的Roxygen小插曲,因为Roxygen2没有。roxygen2没有完全更新说明文件

the vignette(第3页)一样,我创建了一个名为rlandscape-package.R的文件,其中只包含文档包。在晕影,他们说

每个Roxygen描述块必须跟随的声明,即使 头材料描述了一种文件或包代替特定 功能。对于这种情况,roxygen()作为NOOP(无效声明)提供以代表 。

但如果我按照描述块与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 

似乎能够成功运行,但DESCRIPTION文件具有追加的“分页”字段,但是从package.skeleton创建的字段中没有任何变化。为什么不更新描述文件的其余部分?

+3

另一件事。使用** roxygen2 **,对于没有被代码跟踪的文档块,我相信建议被设置为'NULL'(如果使用较旧的** roxygen,您可能会呼叫'roxygen() **包)。 – 2012-03-02 21:01:11

回答

28

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

  • rlandscape-package.R的roxygen标记被处理,它会产生一个文件rlandscape-package.Rd在你的源代码包的man目录。这反过来会产生您在输入?rlandscape?"rlandscape-package"时看到的文档。

  • 源树顶部目录中的DESCRIPTION文件是一个完全独立的野兽。虽然它恰好生成了一个帮助文件,您可以看到(通过help(package="rlandscape")),但它在指导软件包生产中还有许多其他更重要的角色。该方式,它被触摸/受roxygen2是,collate_roclet()功能(执行时你roxygenize()你的包)将与分页领域在现有的预DESCRIPTION文件进行合并(上this pdf第10页的描述)。

主要带回家的消息是,即使使用roxygen2,如果你想改变你的DESCRIPTION文件,则需要通过直接编辑它这样做。

+10

差不多2年后,值得补充说的是'devtools'包现在提供了'create_description'这样的函数来自动创建描述文件。 – Gregor 2014-01-27 18:54:07