2012-04-10 65 views
22

我有兩個方法用於與S3密切相關(在另一個包中定義)的密切相關的方法,所以我想將它們記錄在同一個Rd文件中。然而,當我單獨記錄他們的論點,我從R CMD check約「文檔對象重複的\參數項」用Roxygen在同一個文件中記錄兩個S3方法

##' Create a ggplot of a Kaplan-Meier Survival curve(s) 
##' 
##' @param data A \code{survfit} object returned from \code{\link{survfit}} 
##' @param \dots Unused 
##' @return A ggplot2 object 
autoplot.survfit <- function(data, ...) { 
    NULL 
} 

##' @rdname autoplot.survfit 
##' @param data A \code{\link{survfit.fortify}} object returned from \code{\link{fortify.survfit}} 
autoplot.survfit.fortify <- function(data, ...) { 
    NULL 
} 

的第一個參數必須是data因爲這是通用定義了一個警告。但是,對於不同的方法,它的文檔是不同的,只是因爲它必須是不同的類。我可以有兩個單獨的文檔文件,但它們緊密結合,所以我想將它們放在一起。我可以在第一次調用時列出所有可能的data類,並且在隨後的內容中沒有任何內容,但這意味着我將第一個函數記錄爲第一個函數,而不是像Roxygen的要點一樣保留它們。

是否有可能讓roxygen從多個方法創建合法(不重複參數)?如果不是,處理這種情況的最佳方法是什麼?

+0

複製並粘貼相同的文本? – 2012-06-07 21:14:31

+0

@BrandonBertelsen但是,這兩個文本都必須描述這兩種情況,這打破了文檔的劃分。 – 2012-06-07 21:25:16

+0

@BrianDiggs你有沒有找到一個很好的方式來做到這一點? – Dason 2012-06-22 19:14:23

回答

2

我認爲S3泛型方法背後的思想是,不應該有必要對同一個參數有不同的描述。

如果您生成S3方法文檔##' @method##' @S3method,從使用部分可以明確知道哪些類是可接受的(針對調度發生的參數)。對於其他參數,我會說需要不同的描述可能是一個指示器,應該使用不同的參數名稱。

所以從:

##' Create a ggplot of a Kaplan-Meier Survival curve(s) 
##' 
##' @param data the object to be plotted 
##' @param \dots Unused 
##' @method autoplot survfit 
##' @S3method autoplot survfit 
##' @return A ggplot2 object 
autoplot.survfit <- function(data, ...) { 
    NULL 
} 

##' @rdname autoplot.survfit 
##' @method autoplot survfit.fortify 
##' @S3method autoplot survfit.fortify 
autoplot.survfit.fortify <- function(data, ...) { 
    NULL 
} 

roxygen2

Create a ggplot of a Kaplan-Meier Survival curve(s) 

Description: 

Create a ggplot of a Kaplan-Meier Survival curve(s) 

Usage: 

    ## S3 method for class 'survfit' 
     autoplot(data, ...) 

    ## S3 method for class 'survfit.fortify' 
     autoplot(data, ...) 

Arguments: 

    data: the object to be plotted 

    ...: Unused 

Value: 

    A ggplot2 object 
0

拿到如果參數名稱需要不同的描述,這是可以接受的文件在不同的文件中單獨的方法。這不是我的看法,而是他們在R源代碼中的做法。如果他們這樣做,那一定是對的。查看軟件包「統計數據」的文檔頁面。請注意,predict.arima,predict.gls等存在單獨的文件。

在R源中,打印方法有幾個不同的文件。注意:

$ find . -name "print*.Rd" 
./base/man/print.Rd 
./base/man/print.dataframe.Rd 
./base/man/print.default.Rd 
./stats/man/print.power.htest.Rd 
./stats/man/printCoefmat.Rd 
./stats/man/print.ts.Rd 
./tools/man/print.via.format.Rd` 

我不與以前的海報誰建議,如果他們需要不同的描述,你應該重新命名的參數一致。這削弱了多態的面向對象的想法,這鼓勵我們不擴散不同的名稱,除非必要。

相關問題