如何用Roxygen2为R6类静态方法编写文档?解决document()报错
R6类静态方法的Roxygen2文档解决方案
问题根源
报错提示的核心是Roxygen2无法将静态方法的文档块关联到已存在的对象(即你的TestClass),必须明确指定文档所属的对象,或通过标签将方法文档绑定到类的主文档中。
正确文档写法示例
方式一:用@describeIn关联方法到类文档
这种方式直接将静态方法的描述附加到类的文档中,结构紧凑:
#' Test R6 Class with Static Method #' #' 带静态方法的示例R6类 #' #' @export #' @importFrom R6 R6Class #' @describeIn TestClass 检查对象是否为TestClass实例的静态方法 #' @param x 待检查的对象 #' @return 逻辑值,标识x是否为TestClass实例 TestClass <- R6::R6Class( "TestClass", public = list( initialize = function() { # 初始化逻辑 } ), public_static = list( Is = function(x) { inherits(x, "TestClass") } ) )
方式二:用@section单独划分静态方法章节
适合类包含多个静态方法的场景,可读性更强:
#' Test R6 Class with Static Method #' #' 带静态方法的示例R6类 #' #' @export #' @importFrom R6 R6Class #' @section 静态方法: #' \code{Is(x)}: 检查对象是否为TestClass实例 #' \itemize{ #' \item \code{x}: 待检查的对象 #' \item 返回值: 逻辑值,标识x是否为TestClass实例 #' } TestClass <- R6::R6Class( "TestClass", public = list( initialize = function() { # 初始化逻辑 } ), public_static = list( Is = function(x) { inherits(x, "TestClass") } ) )
关键注意事项
- R6的静态方法属于类的一部分,不能作为独立对象单独写文档块,必须将其文档整合到类的主文档中。
- 若一定要单独为静态方法写文档块,必须在块中添加
@name TestClass,明确指定文档归属的类对象:#' @name TestClass #' @describeIn TestClass 检查对象是否为TestClass实例的静态方法 #' @param x 待检查的对象 #' @return 逻辑值 NULL - 确保类的主文档块包含
@export(若需将类导出到包命名空间),并正确导入R6Class。
内容的提问来源于stack exchange,提问作者jxf
相关产品推荐
相关产品推荐

