r - 使用 R6 类创建并记录一个包

标签 r class rstudio

由于 RStudio、devtools 和 roxygen2,我目前正在使用 R6 类创建我的第一个 R 包 (:D)。当我的包只包含函数时,我可以毫无问题地构建和加载它。但是,当我想记录 R6 类(在这个包 https://cran.r-project.org/web/packages/data.tree/data.tree.pdf 中带有“Node”之类的字段和方法)时,RStudio 不想构建这个包。我试图在论坛上找到窍门,但是关于这个问题的信息非常稀少

我的程序:

  • 打开Rstudio,新建一个项目,我选择“R包”
  • 我填写包的名称,并选择我的包将基于的源文件(一个函数和 3 个类)。

  • -> 在这一点上,过程是好的,因为我用“man”获得了正确的结构,描述了我的不同类,“R”用这些类的不同脚本。

    但是当我尝试构建并重新加载包(已预先加载 R6 包)时,出现错误:
    ==> R CMD INSTALL --no-multiarch --with-keep.source esa
    
    * installing to library ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0’
    * installing *source* package ‘esa’ ...
    ** R
    ** preparing package for lazy loading
    Error in eval(expr, envir, enclos) :
      impossible de trouver la fonction "R6Class" (translation: impossible to find the function "R6Class")
    Error : unable to load R code in package ‘esa’
    ERROR: lazy loading failed for package ‘esa’
    * removing ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0/esa’
    * restoring previous ‘/home/cha/R/x86_64-pc-linux-gnu-library/3.0/esa’  
    
    Exited with status 1. 
    

    我不明白如何解决这个错误,因为 Rstudio 是对的:R6Class 不是函数!

    我的问题:

    我的程序正确吗?我该如何解决这个错误?

    我需要知道 Rstudio 是否能够在 R 包构建中考虑 R6 类?
    如果没有,我可以手动完成,但我只需要知道为了停止使用 RStudio 浪费我的时间:)

    预先感谢您的帮助 !!

    最佳答案

    非常感谢麦克弗利克!!

    我刚刚从 R6Class 包的开发人员那里收到了一个答复。他们告诉我,我只需要添加一行

    importFrom(R6, R6Class)
    

    在 NAMESPACE 文件中。它工作正常! (我永远不会单独找到它:S)

    此外,要添加一些项目,例如继承、字段和方法,他们建议以具有预期结构的包中的 .Rd 为例。

    最后他们推荐了一本书http://r-pkgs.had.co.nz/ ,我想我会读的!!

    再次感谢大家

    关于r - 使用 R6 类创建并记录一个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35581343/

    相关文章:

    R apply 语句不适用于矩阵

    r - 如何标记 r 列中两个特定字符值之间的所有行?

    r - R编程:从数据框中找到所有因素

    java - 为什么实例变量在java中有默认值?

    r - 将一列中的字符串拆分为两列

    r - Shiny 的应用程序在 Rstudio 中运行良好但找不到文件错误 Shiny 服务器

    r - 检查项目是否在列表中

    c++ - C++命名空间名和类名重复会导致冲突吗?

    class - 在与语言无关的上下文和 typescript 中,环境类是什么?

    r - 在 RMarkdown 上使用附录时包括引文和引用文献