2012-11-30 32 views
2

可能重複:
How to properly document S4 class slots using Roxygen2什麼是包含S4類的包的建議包構建工作流程?

我想建立,使用R Studio和roxygen2包含S4 classes包。 當我將幾個S4 classes引入到我的包中時,我已經使用roxygen2語法記錄了我的所有函數。

現在我意識到,沒有'@ slot'功能的開箱即用。所以我想知道如何讓我的所有文檔都能用於其他功能,並像this thread中的建議那樣手動記錄S4 classes

或者換句話說,你會推薦哪個工作流程來構建一個既包含舊學校功能又包含S4 classes的包?

編輯:你會推薦配置R Studio構建的工具不要創建.Rd文件。 roxygenize手動,然後添加信息?不過這將導致覆蓋類的手動生成.Rd文件...

+0

@ Hans0I0究竟是你的問題嗎?按照你所鏈接的那個話題做什麼,以及例如http://www.inside-r.org/questions/how-properly-document-s4-class-slots-using-roxygen2。確保您正確導出它們.μ –

+1

我的問題是R Studio標準工作流程。每次我點擊構建'Roxygen'用於創建.Rd文件。如果我手動添加類的.Rd文件(如本主題中所建議的那樣),那麼下次從R Studio運行構建時,這些手動更改將被覆蓋。 –

+1

但是,您不必手動添加.Rd文件。你只需要使用描述來創建你的插槽。 –

回答

4

上roxygen和S4類一般信息

roxygen的第一個版本已經在@slot標籤,但該版本不維護更有利於roxygen2。所以建議不要使用舊版本。

就目前而言,roxygen2沒有真正支持S4類。哈德利正努力在roxygen3https://github.com/hadley/roxygen3)中做到這一點。如果你想給它一個鏡頭,並感到勇敢:從github安裝roxygen3,並嘗試開發版本。請注意,此版本最終將包含在roxygen2中,因此問題會及時解決。

關於你的工作流程:

我個人一直覺得這是一個壞主意,使用roxygen和手動編寫.Rd文件結合起來。但是,如果必須,您可以使用參數roxygen.dir將roxygen的輸出發送到其他目錄。這樣,您可以將您想要的任何內容複製到軟件包目錄中,而不會覆蓋手動編寫的文件。

roxygenise("./mypackage", roxygen.dir="./myroxygendir") 

我會做什麼,是簡單地使用roxygen2爲您鏈接到線程解釋寫Rd文件爲你的類。您不必像手中那樣手動添加它們,原因不明。您只需使用#'像往常一樣指示Rd塊,並使用您鏈接到的線程中給出的任何內容。如果您想將插槽製作爲單獨的部分,則可以使用@section標籤來完成此操作,如下例所示。

如何添加插槽使用roxygen2當下一個例子:

#' The MY class 
#' 
#' This class blabla yadayada 
#' 
#'@section Slots: 
#' \describe{ 
#' \item{\code{aslot}:}{Object of class \code{"numeric"}, containing 
#'whatever and a bit more} 
#' \item{\code{anotherslot}:}{Object of class \code{"character"}, containing 
#' strings.} 
#' } 
#' 
#' @note Yes, you can add notes 
#' @name MY 
#' @rdname MY 
#' @aliases MY-class 
#' @exportClass MY 
#' @author Joris Meys 
setClass("MY", 
     representation=representation(aslot="numeric", 
             anotherslot="character" 
             ) 
+0

絕對會檢查出roxygen3的開發版本。不用說,我是哈德利作品的忠實粉絲。但是,目前我只是想避免缺乏重點來完成我的軟件包。雖然我喜歡你的兩個答案,但我只能+1 :)。在您發表評論之前,我沒有意識到,我可以在同一文檔中實際擁有\ describe和@params。它在R Studio中發出警告,但工作。謝謝Joris! –

+0

@ hans0l0如果你有一個S4類,我想知道你爲什麼需要'@ param'在同一個文檔中。就我個人而言,我保持我的課程文件與獲得者,制定者和其他人分離。對於我來說,這更容易爲我概述,並且它不會在RStudio中給出警告。請務必檢查http://stackoverflow.com/questions/13510234/how-to-specify-in-which-order-to-load-s4-methods-when-using-roxygen2以使用「@ include」標籤 –

+0

你說得對。我不使用'@ param'。只是想說我不知道​​我可以將@語法與\ \\ \\結合起來。啊和thx的鏈接 - 的確非常教育...... –