如何使用Roxygen2添加没有通用别名的特定于类的别名?

时间:2012-01-20 20:29:23

标签: r documentation s4 roxygen roxygen2

一个简单的例子是我创建了show的扩展,这是一个S4基本方法。我不想通过在我的包中重新记录show来导致消除歧义,我还想在新类的文档中将我的扩展文档合并到show myPkgSpClass 1}},为show,myPkgSpClass-method添加别名。

#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

我遇到的问题是,这会在roxygen2,Rd files with duplicated alias 'show':的文档构建期间导致严重警告,因为此程序包中有show的多个类扩展,以及roxygen2已自动将别名列表中的通用术语添加到所有相关的*-class.Rd文件中:

\alias{show}
\alias{show,myPkgSpClass-method}

但我认为我不希望在任何实例中使用通用别名,因为它会强制要求我的包中的show和基础show之间消除歧义。此问题也适用于从show以外的其他包扩展的其他S4方法。

如果我将所有特定于类的方法标记为相同的.Rd文件,则警告消失,但仍然存在歧义,因为show别名仍会自动添加到该文档条目中。如果我从\alias{show}文件中手动删除.Rd,则问题似乎已解决,在roxygen或R CMD check pkgname期间没有警告。那么如何让Roxygen2不添加通用别名?

其他背景:

这是一个特定的问题,从前一个问题构建,用于将S4扩展导出/记录到基本方法: Is it necessary to export base method extensions in an R package? Documentation implications?

关于使用Roxygen2记录S4方法/类的以下问题,它更具体,而不是涵盖:

How to properly document S4 methods using roxygen2

How to properly document S4 class slots using Roxygen2?

1 个答案:

答案 0 :(得分:2)

似乎在roxygen2_3.1.0中修复:

#' @export
#' @aliases show,myPkgSpClass-method
#' @rdname myPkgSpClass-class
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

生成myPkgSpClass-class.Rd:

\docType{methods}
\name{show,myPkgSpClass-method}
\alias{show,myPkgSpClass-method}
\usage{
\S4method{show}{myPkgSpClass}(object)
}
\arguments{
  \item{object}{Any R object}
}

正如Hadley所说,你不再需要明确设置别名或rd名称,例如:

#' my title
#' @export
setMethod("show", "myPkgSpClass", function(object){ show(NA) })

将生成show-myPkgSpClass-method.Rd:

\docType{methods}
\name{show,myPkgSpClass-method}
\alias{show,myPkgSpClass-method}
\title{my title}
\usage{
\S4method{show}{myPkgSpClass}(object)
}
\arguments{
  \item{object}{Any R object}
}
\description{
my title
}

请注意,在这种情况下,您必须设置说明。如果文档条目为空,它将不会生成文档页面。