我已经在SO和其他地方看到了一些关于在未来版本的Roxygen2中应该如何或将要完成的讨论.但是,我被卡住了.我应该如何使用Roxygen2记录S4泛型及其方法?一个全新的通用/方法的工作示例,以及扩展基础S4通用的示例将非常有用.我不想为同一个泛型的每个S4方法制作单独的(大多数)冗余文档.
尽职调查:我已经找到了"提取"方法的有用示例.但是,对于我的问题,它似乎已经过时且不完整.它在类文档中使用@slot标记,但不支持(不再?).它仅显示了核心S4方法"["的扩展,而不是包含S4泛型文档的完整Roxygen示例.
如何正确记录S4"["和"[< - "方法使用roxygen?
如果我用标题,描述完全记录一个新的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.
Run Code Online (Sandbox Code Playgroud)
它首先看起来好像我用这种方式用roxygen2记录的S4方法都没有实际工作.但是,到目前为止,我注意到我的核心方法"show"的扩展没有相关的错误,即使它们的记录方式与其他方法完全相同.以下是我在其中一个show方法中包含的完整roxygen文档的示例,它没有生成遗漏文档错误:
#' @name show
#' @aliases show,myClass2-method
#' @docType methods
#' @rdname show-methods
Run Code Online (Sandbox Code Playgroud)
因此,我很茫然.如您所见,我已经包含了R包手册的S4文档部分中描述的S4方法的别名约定,即方法应该具有以下名称的别名(没有空格):
generic,signature_list-method.
Run Code Online (Sandbox Code Playgroud)
不知何故,这并没有被完全理解 …
我正在写一个小R包,其想法是将来提交给Bioconductor,这就是我决定试用s4课程的原因.不幸的是我在理解何时应该在我的包中使用setGeneric时遇到了问题,并且该setGeneric方法的文档对我来说或多或少是不可理解的.
具体例子:
[<-运营商定义了一种方法setMethod("[","Foo", ...)as.list使用函数的方法setMethod("as.list", "Foo",...)setGenerics在命名空间中使用和导出我的方法,因为我在某处读到了已经定义的泛型函数不需要它现在的问题是[访问器方法就像魅力一样,但是as.list不起作用.更令人困惑的是,当我通过在R终端输入来导入库BiocGenericslibrary(BiocGenerics)时,as.list开始工作.
问题1:我如何确定[始终有效?这不仅仅是巧合,因为我导入了一些库?
问题2:我该怎么做才能as.list上班?在命名空间中导出方法?用setGeneric?
问题3:我认为它as.list开始起作用,因为setGeneric("as.list"...)在BiocGenerics软件包中使用,但似乎并非如此,请阅读此处:http://www.bioconductor.org/packages/release/bioc/manuals/BiocGenerics /man/BiocGenerics.pdf
那么为什么as.list开始工作?它在哪里定义?