一个简单的例子是我创建了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方法/类的以下问题,它更具体,而不是涵盖:
答案 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
}
请注意,在这种情况下,您必须设置说明。如果文档条目为空,它将不会生成文档页面。