我在stackoverflow和其他地方看到了一些关于如何使用Roxygen2记录S4通用函数及其方法的讨论。然而,我卡住了。我应该如何使用Roxygen2记录S4通用函数以及它的方法?一个全新的通用函数/方法的工作示例以及扩展基本S4通用函数的示例将非常有用。我不想为同一个通用函数的每个S4方法制作单独的(大部分是)冗余文档。
尽职调查: 我找到了一个有用的"extract"方法示例。但是对我的问题来说,它似乎已经过时并且不完整。它在类文档中使用了@slot标签,这个标签现在似乎不再被支持。它只显示了一个核心S4方法“[”的扩展,而没有包括完整的Roxygen示例,包括S4通用函数的文档。
如何使用Roxygen正确记录S4 "[ ]"和"[<-"方法?
如果我完全使用标题、描述、@param @return @name @aliases @docType @rdname
等相应的标签来记录新的S4通用函数,然后只使用相应的@name @aliases @docType @rdname
来记录S4方法,那么我会得到以下的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"的扩展并没有产生相关错误,即使它们与其他方法完全相同地进行了记录。以下是其中一个show方法上面包含的完整roxygen文档的示例,它没有生成缺少文档的错误:
#' @name show
#' @aliases show,myClass2-method
#' @docType methods
#' @rdname show-methods
因此,我陷入了困境。正如您所看到的,我已经包括了 R 包手册中描述的 S4 方法别名约定,即方法应该有一个以下名称的别名(不带空格):R 手册中的 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
包中使用),可能的原因和解决方案是什么?
plot
方法时,会出现以下错误信息:Undocumented S4 methods: generic 'plot' and siglist 'cd.fit'
,导致 R CMD CHECK 失败。 - scottyaz