为不在包中的 R6 类创建 Rd 文档文件

2024-01-06

我正在尝试创建一些包含一些 R6 类的脚本的文档。作为示例,我使用此处名为“Person”的 R6Class:https://www.tidyverse.org/blog/2019/11/roxygen2-7-0-0/ https://www.tidyverse.org/blog/2019/11/roxygen2-7-0-0/

我正在使用这个功能https://stackoverflow.com/a/59073260/12166017 https://stackoverflow.com/a/59073260/12166017无需创建包即可创建文档。是否也可以将其用于 R6Classes 或者是否有其他方法可以实现此目的?使用提到的功能我总是收到错误R6 Class (Person) without source references.

tidyverse官方博客的解决方案https://www.tidyverse.org/blog/2019/11/roxygen2-7-0-0/ https://www.tidyverse.org/blog/2019/11/roxygen2-7-0-0/来写Roxygen: list(r6 = FALSE)在描述文件中不起作用,因为我没有包,所以没有描述文件。


一种方法是劫持 roxygen2 的一些未导出函数来为记录的 R6 类创建块对象并编写一个Rd文件。然后可以使用以下命令对其进行解析并写入 htmltools包裹。

这是一个非常粗略的概念验证,要求您的 R6 定义位于独立文件中,并且不接受任何参数以允许保存到特定位置等,但它可以进行调整和扩展以适应:

document_R6 <- function(R_file)
{
  blocks  <- lapply(roxygen2:::tokenize_file(R_file), roxygen2:::block_set_env,
                    env = .GlobalEnv)
  blocks  <- roxygen2:::order_blocks(blocks)
  roclet  <- roxygen2:::roclet("rd")
  my_rd   <- suppressWarnings(roxygen2:::roclet_process(roclet, blocks))
  my_rd   <- my_rd[[1]]$format()
  rd_file <- tempfile()
  writeLines(my_rd, rd_file)
  tools::Rd2HTML(tools::parse_Rd(rd_file), 
                 gsub("\\.R$", ".html", R_file))
}

因此,如果我们有以下文件(取自您的链接):

Person.R

#' R6 Class representing a person
#'
#' A person has a name and a hair color.
Person <- R6::R6Class("Person",
  public = list(
    #' @field name First or full name of the person.
    name = NULL,

    #' @field hair Hair color of the person.
    hair = NULL,

    #' @description
    #' Create a new person object.
    #' @param name Name.
    #' @param hair Hair color.
    #' @return A new `Person` object.
    initialize = function(name = NA, hair = NA) {
      self$name <- name
      self$hair <- hair
      self$greet()
    },

    #' @description
    #' Change hair color.
    #' @param val New hair color.
    #' @examples
    #' P <- Person("Ann", "black")
    #' P$hair
    #' P$set_hair("red")
    #' P$hair
    set_hair = function(val) {
      self$hair <- val
    },

    #' @description
    #' Say hi.
    greet = function() {
      cat(paste0("Hello, my name is ", self$name, ".\n"))
    }
  )
)

那么我们可以这样做:

document_R6("Person.R")

以下是生成的“Person.html”文件的屏幕截图,该文件位于与“Person.R”相同的目录中:


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为不在包中的 R6 类创建 Rd 文档文件 的相关文章

  • 如何在 R 中的多图形环境中画一条线?

    举一个非常简单的例子 mfrow c 1 3 每个图都是不同的直方图 我将如何画一条水平线 类似于abline h 10 所经过的all3位数 也就是说 甚至是它们之间的边距 显然 我可以为每个图形添加一条 abline 但这不是我想要的
  • data.table:j中的匿名函数

    我试图让匿名函数返回多列j的论证data table 这是一个例子 sample data tmpdt lt data table a c rep a 5 rep b 5 b c rep f 3 rep r 7 c 1 10 d 21 30
  • 一起使用 R6 类和 foreach() %dopar% 的问题

    当与 foreach 一起使用时 我在 R6 类上遇到问题 可能与环境有关 我使用的是 Windows 假设有两个 R6 类 class1 和 class2 class1 中的 method1 依赖于 class2 例如 请参见下面的示例代
  • R grep:有 AND 运算符吗?

    假设我有以下数据框 User Id Tags 34234 imageUploaded people jpg more comma separated stuff 34234 imageUploaded 12345 people jpg 我如
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • 如何将表输出复制到剪贴板?

    我试图通过单击按钮将表输出复制到剪贴板 我尝试查看 rclipboard 包 但以我有限的理解 它似乎无法复制输出 我添加了一个actionButton屏幕截图中带有一个图标来显示我想要实现的目标 现在按钮没有任何作用 Code libra
  • tm 包本身是否提供了组合文档术语矩阵的内置方法?

    tm 包本身是否提供了组合文档术语矩阵的内置方法 我在同一语料库上生成了 4 个文档术语矩阵 每个矩阵为 1 2 3 4 克 它们都非常大 200k 10k 因此将它们转换为数据帧然后绑定它们是毫无疑问的 我知道我可以编写一个程序来记录每个
  • 有条件地为 R 中置信带之外的数据点着色

    我需要对下图中置信带之外的数据点与带内的数据点进行不同的着色 我是否应该在数据集中添加一个单独的列来记录数据点是否在置信区间内 您能举个例子吗 示例数据集 Dataset from http www apsnet org education
  • R 中的约束优化

    我正在尝试使用http rss acs unt edu Rdoc library stats html constrOptim html http rss acs unt edu Rdoc library stats html constr
  • 使用 BASH 和 AWK 创建 HTML 表

    我在创建 html 表来显示文本文件中的统计信息时遇到问题 我确信有 100 种方法可以做得更好 但这里是 以下脚本中的注释显示了输出 bin bash function getapistats curl s http api exampl
  • 将嵌入其他文本的长州名称转换为两个字母的州缩写

    我的目标是识别以具有其他文本的字符向量写出的美国各州 并将各州转换为缩写形式 例如 北卡罗来纳州 到 北卡罗来纳州 如果向量只有长形式的状态名称 那就很简单 但是 我的向量在随机位置有其他文本 如示例 states 中所示 states l
  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • 使用 DEF 文件而不是 LIB 文件链接到 DLL?

    我了解到你可以 将 DLL 文件转换为 DEF文件 其中包括其导出 编辑 这不适用于许多约定 转换一个 DEF文件转换为 LIB 文件 您可以使用该文件链接到 DLL 为什么 大多数 链接器不能链接到给定的 DLLonly DEF 文件 而
  • 使用 R 中的 reshape 函数处理多个匹配行

    所以我有以下数据框df X Y Z ID value 1 0 20 135 a 20 2 0 20 135 a 30 3 0 20 135 b 40 4 20 104 20 c 10 5 20 104 20 b 15 我想要的最终输出 X
  • 使用 data.table 而不是 data.frame 进行子集化

    我正在处理一个包含 300 万行和 10 列的数据框 并且正在对其进行一些子集化 我下面有一些玩具代码 当我子集化时 需要很长时间 如果我使用 data table 和 data table 上的子集会更快吗 这是一些玩具代码 s lt c
  • R - Rstudio - 如果生成警告/错误,则使 R 播放声音

    我正在运行一个循环遍历股票对组合列表的脚本 偶尔 由于对组合之间的数据长度不同而产生错误 脚本会停止运行 我只是将不匹配的股票从考虑中删除 Error in model frame default formula stckY stckX 0
  • 加载 plyr 包时出现问题

    我使用 R 2 13 1 但未能成功尝试在 R 中加载包 plyr 1 6 我已将其手动安装到目录 R library 中 我的代码是 libPaths R library library plyr 我收到消息 库 plyr 中的错误 pl
  • 通过另一个函数将数据和列名称传递给 ggplot

    我将直接跳到一个示例并在后进行评论 cont lt data frame value c 1 20 variable c 1 20 1 20 1 5 1 20 2 group rep c 1 2 3 each 20 value variab
  • 使用 kableExtra 增加行/行间距

    有没有办法在 r markdown 或 bookdown 中使用 kableExtra 增加 pdf 输出的行间距 library knitr library kableExtra kable head iris 5 caption Iri
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S

随机推荐