2012-04-10 32 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` 

我不与以前的海报谁建议,如果他们需要不同的描述,你应该重新命名的参数一致。这削弱了多态的面向对象的想法,这鼓励我们不扩散不同的名称,除非必要。

相关问题