我已经阅读了Roxygen2 PDF以及本网站,并且我迷失了@method @ S3method @export之间的区别,以及如何使用这些来正确loggingS3方法。 我研究了下面的例子来讨论: 1.我将如何正确logging这些? 2.如何模拟打印和其他通用函数的文档,这些函数显示所有类特定实现的用例(例如,“打印”显示“因子”,“表”,“函数”的用法) 3.从wiki页面:“所有导出的方法需要@ S3method标签,它具有与@method相同的格式,导出的方法,而不是函数 – 即通用(myobject)将工作,但generic.mymethod(myobject)将不会。” 我无法解释这一点。 这似乎是说,如果标签不正确地指定,函数/方法调用将不能正常工作? 具体什么会打破? MyHappyFunction = function( x , … ) { UseMethod( "MyHappyFunction" ) } MyHappyFunction.lm = function( x , … ) { # do some magic }
tl;我的问题的版本 如果我想导入包,是否必须手动将import()指令写入我的NAMESPACE文件? 好像roxygen2不会神奇地为我做,即使我把它们列为“import:”在我的描述。 更好的版本 这是一个非常愚蠢的问题,但我问,因为答案对我来说并不明显。 我使用roxygen2来处理我的R包文档。 当我想要确定一个函数被导出时,我在它的roxygen块中添加一个@export标签。 随后的roxygenize()运行将相应地写入NAMESPACE指令。 但是, 我的软件包目前还导入了其他几个 Depends: R (>= 2.13.0), ggplot2 (>= 0.8.9) Imports: RColorBrewer, plyr, gridExtra 看来,尽piperoxygen2 将重写导出函数的NAMESPACE指令,但它不会自动重写NAMESPACE,以反映我指定的包应该导入到我的描述中。
我已经在SO和其他地方看到了一些关于Roxygen2未来版本应该如何实现的讨论。 但是,我卡住了。 我应该如何使用Roxygen2来logging一个S4generics以及它的方法? 一个全新的通用/方法的工作示例,以及扩展基本S4通用的例子将是非常有用的。 我不想为同一个通用的每个S4方法做单独的(大部分)冗余文档。 尽职调查:我已经find了“提取”方法的一个有用的例子。 但是,我的问题似乎已经过时和不完整。 它在类文档中使用@slot标签,不支持(不再支持)。 它只显示了核心S4方法的扩展“[”,而不是一个完整的Roxygen例子,包括S4通用的文档。 如何正确loggingS4“[”和“[< – ”使用roxygen的方法? 如果我完整地logging了一个带有标题的新的S4generics,描述@param @return @name @aliases @docType @rdname ,然后用相应的@name @aliases @docType @rdnameloggingS4方法,我得到下面的R CMD check警告: * checking for missing documentation entries … WARNING Undocumented S4 methods: << long list of apparently undocumented methods. Eg generic 'plot' and siglist 'myClass1,ANY' >> All user-level objects in a package […]
实际的问题 如何避免Rd文件名称冲突 一个S4generics和它的方法不一定全都在同一个包中定义(包含(一些)定制方法的包依赖于包含generics的包) 使用roxygenize()包中的roxygenize()生成实际的Rd文件? 我不确定这是一个roxygen2问题还是一个普通的问题,当generics和它的方法分散在不同的包(如果你遵循一个模块化的编程风格,一般来说,恕我直言,一定是一个现实的用例场景)。 build议如何处理这些情况? 插图 在包pkga 假设在包pkga你定义了一个通用方法foo ,并且你已经提供了roxygenize()拾取的相应roxygen代码来生成Rd文件: #' Test function #' #' Test function. #' #' @param … Further arguments. #' @author Janko Thyson \email{janko.thyson@@rappster.de} #' @example inst/examples/foo.R #' @docType methods #' @rdname foo-methods #' @export setGeneric( name="foo", signature=c("x"), def=function( x, … ) { standardGeneric("xFoo") } ) 当roxygenizing()你的包时,一个名为foo-methods.Rd的文件被创build在man子目录中,作为可能为这个generics方法创build的所有方法的参考Rd文件。 到现在为止还挺好。 如果这个通用的所有方法也是你的包的一部分,一切都很好。 例如,这个roxygen代码将确保将文档添加到foo-methods.Rd用于foo-methods.Rd的ANY方法: #' […]
我有一个使用roxygen2的R包。 它在/src有一些C代码,我刚刚开始与Doxygen合作。 有什么方法可以合并文档,或者将编译与roxygen2集成吗? 哪里可以放置C代码文档的任何“最佳实践”? 谷歌searchroxygen2和doxygen主要导致roxygen是类似于doxygen的结果。 我用Doxyfilesfind了一些软件包,但没有一致的组织。 例如,lme4将inst/doc/Doxyfile输出到lme4源目录之外的名为doxygen的文件夹。 Matrix的根目录中还有一个Doxyfile(但是在以前的版本中是在inst ,这个文档也被导出到软件包目录之外。 是否有任何理由不将C文档包含在软件包中,或者为什么Doxgen在R软件包中很less使用,尽pipe广泛使用C ? 更新:请参阅相关的roxygen2function请求
为了用roxygen(2)logging类,指定标题和描述/细节看起来与函数,方法,数据等相同。然而,插槽和inheritance是它们自己的一种动物。 目前或计划的最佳做法是如何loggingroxygen2中的S4课程? 尽职调查: 我在早期的roxygen描述中发现了一个@slot标签。 2008 R-forge邮件列表post似乎表明这已经死了,并且在@slot中不支持@slot: roxygen2是真的吗? 前面提到的postbuild议用户应该用LaTeX标记制作自己的分项列表。 例如,扩展"character"类的新的S4类将被编码和logging如下: #' The title for my S4 class that extends \code{"character"} class. #' #' Some details about this class and my plans for it in the body. #' #' \describe{ #' \item{myslot1}{A logical keeping track of something.} #' #' \item{myslot2}{An integer specifying something else.} #' #' \item{myslot3}{A […]