我在 SO 和其他地方看到了一些关于在 Roxygen2 的未来版本中应该或将如何完成的讨论。但是,我被困住了。我应该如何使用 Roxygen2 记录 S4 泛型及其方法?全新泛型/方法的工作示例以及扩展基本 S4 泛型的示例将非常有用。我不想为相同泛型的每个 S4 方法制作单独的(大部分)冗余文档。
尽职调查:我找到了“提取”方法的一个有用示例。但是,对于我的问题,它似乎已经过时且不完整。它在类文档中使用 @slot 标记,该标记不再(不再?)支持。它仅显示核心 S4 方法“[”的扩展,而不是包含 S4 泛型文档的完整 Roxygen 示例。
如何使用 roxygen 正确记录 S4“[”和“[<-”方法?
如果我用 title、description 完整记录一个新的 S4 泛型,@param @return @name @aliases
@docType @rdname
然后只用相应的 记录 S4 方法@name @aliases
@docType @rdname
,我会收到以下R CMD check
警告:
* checking for missing documentation entries ... WARNING
Undocumented S4 methods:
<< long list of apparently undocumented methods. E.g. generic 'plot' and siglist 'myClass1,ANY' >>
All user-level objects in a package (including S4 classes and methods)
should have documentation entries.
乍一看,好像我用 roxygen2 以这种方式记录的 S4 方法都没有真正起作用。然而,到目前为止,我注意到我对核心方法“show”的扩展没有相关的错误,即使它们的记录方式与其他方法完全相同。这是我在其中一种显示方法上方包含的完整 roxygen 文档的示例,它没有生成缺少文档的错误:
#' @name show
#' @aliases show,myClass2-method
#' @docType methods
#' @rdname show-methods
因此,我不知所措。如您所见,我已经包含了R 包手册的 S4 文档部分中描述的 S4 方法的别名约定,即方法应该有一个具有以下名称的别名(不含空格):
generic,signature_list-method.
不知何故,这并没有被完全理解R CMD check
。
最后,在使用以下命令构建文档后:
library("devtools")
library("roxygen2")
document("mypkgname")
check_doc("mypkgname")
并构建包,我得到了功能文档。特定方法文档中的任何标题都会出现在“描述”字段中,相当尴尬。所以 roxygen2 显然对每个方法的文档做了一些事情,并且走上了正确的轨道。然而,仅仅避免一个大而令人不安的警告是不够的
> R CMD check mypkgname
我查看了 Rd 文件,但我对它们的了解更少,无法快速了解问题所在,而且我无论如何都想知道 roxygen2 解决方案,这样我就不必在每次文档修订后直接操作 Rd 文件。
所以这是一个多部分的问题:
roxygen2 的 S4 通用和 S4 方法文档的当前推荐方法是什么?
是否有一个很好的例子可以显示完整的细节?
大多数 S4 方法的文档丢失的警告可能是什么原因和解决方案(即使具有“缺少”文档的方法实际上已经由 roxygen2 解析了它们的文档,并且生成的 Rd 文件至少足以工作在包后
R CMD build mypkgname
)?