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

Pau*_*die 13 documentation r roxygen s4 roxygen2

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

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

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

\alias{show}
\alias{show,myPkgSpClass-method}
Run Code Online (Sandbox Code Playgroud)

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

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

其他背景:

这是从前一个问题构建的特定问题,用于将S4扩展导出/记录到基本方法: 是否需要在R包中导出基本方法扩展?文档含义?

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

如何使用roxygen2正确记录S4方法

如何使用Roxygen2正确记录S4类插槽?

Kar*_*ner 2

似乎已在 roxygen2_3.1.0 中修复:

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

生成 myPkgSpClass-class.Rd:

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

正如 Hadley 所说,您不再需要显式设置别名或 rd 名称,例如:

#' my title
#' @export
setMethod("show", "myPkgSpClass", function(object){ show(NA) })
Run Code Online (Sandbox Code Playgroud)

将生成 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
}
Run Code Online (Sandbox Code Playgroud)

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

  • 您不需要指定别名或 rdname。 (3认同)