2012-03-02 15 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