【问题标题】:Documenting reference class with roxygen2 R CMD check codoc mismatches warning使用 roxygen2 R CMD 检查 codoc mismatches 警告记录参考类
【发布时间】:2014-05-17 04:53:14
【问题描述】:

我正在尝试使用 roxygen2 为引用类对象制作文档,但是当我运行 R CMD 检查时,我不断收到此警告:

  S4 class codoc mismatches from documentation object 'myRefClass-class':
  Slots for class 'myRefClass'
  Code: .xData
  Inherited: .xData
  Docs: field1 field2

这是与上述警告相关的 ref 类和 roxygen2 块:

#' @title myRefClass class
#' @description Description of myRefClass
#' @import methods
#' @exportClass myRefClass
#' @slot field1 A character slot
#' @slot field2 A numeric slot
myRefClass<-setRefClass(Class="myRefClass", 
                        fields=list(field1="character", 
                        field2="numeric"))

这是生成的 R 文档:

myRefClass-class {testPackaging} R 文档 myRefClass 类

说明

myRefClass 的描述

插槽

字段1 一个字符槽

字段2 一个数字槽

至于我能找到的文档,codoc 正在测试我的代码和文档之间的一致性。据我所知,所有插槽名称都是相同的;也许我错过了一些东西。 不确定文档是否应该自动将其标记为参考类,或者我是否应该以某种方式指出这一点? 我发现 R 文档表明插槽“.xData,用于启用从异常类型的继承”,但我不确定它为什么适用于我在这里所做的事情,或者我是否应该对它做一些事情。

我已经尝试了许多 roxygen 标签的排列,并保持接近此处找到的结构似乎给了我最好的结果/来自 R CMD 检查的最少警告:Roxygen2 - how to @export reference class generator? 我一直在网上寻找有关如何将 roxygen2 与参考类一起使用的示例;也许我找错地方了——我运气不太好。

我正在使用 roxygen2 v 3.1.0 / RStudio 版本 0.98.501 / R 版本 3.0.3 / OSX 10.9.2 (注意:尝试升级到 roxygen2 v 4.0 并且它完全被引用类阻塞,以至于根本没有生成任何文档)

如果有人知道使用 roxygen2 和参考类的 CRAN 包,以便我可以看到它是如何正确完成的,或者如果有人知道我做错了什么,我们将不胜感激。我是 R 包构建的新手。

【问题讨论】:

  • 我在记录参考类时不使用@slots。我只使用@section Fields:。例如,我在 github.com/klutometis/roxygen/issues/168 上看到了记录 RC 的进展,但我没有足够的勇气来改变当前的功能;)
  • 太棒了!那行得通。谢谢@jdharrison。如果您想将其作为答案提交,我想将其标记为已接受的解决方案。

标签: r documentation roxygen2 reference-class roxygen


【解决方案1】:

我通常使用@section Fields,所以在这种情况下:

#' @title myRefClass class
#' @description Description of myRefClass
#' @import methods
#' @exportClass myRefClass
#' @section Fields:
#' \describe{
#' \item{\code{field1}:}{Object of class \code{"character"}, field1 description here}
#' \item{\code{field2}:}{Object of class \code{"numeric"}, field2 description here}
#' }

myRefClass<-setRefClass(Class="myRefClass", 
                        fields=list(field1="character", 
                        field2="numeric"))

更新:使用 roxygen2 4.0.1

#' A Reference Class to represent test1.
#' @name test1
#' @import methods
#' @exportClass myRefClass
#' @field field1 A character vector
#' @field field2 A numeric vector

myRefClass<-setRefClass(Class="myRefClass", 
                        fields=list(field1="character", 
                                    field2="numeric"))

产生

A Reference Class to represent test1.
Description

A Reference Class to represent test1.
Fields

field1

    A character vector
field2

    A numeric vector

【讨论】:

  • 或者只是@fields,roxygen2 4.0.1 中的新功能
  • 感谢@hadley 的更新,我发现我必须使用@field 而不是@fields thou?
  • 哦,是的,抱歉打错了。
  • @hadley 4.0.1 似乎非常适合引用类我只需将我的包移动到 @field 和方法的文档字符串现在 gulp....
  • 那么你如何记录类的方法呢?
猜你喜欢
  • 2013-02-08
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 2018-11-12
  • 2017-05-28
  • 2018-09-16
相关资源
最近更新 更多