Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建并记录包含R6类的包_R_Class_Rstudio - Fatal编程技术网

创建并记录包含R6类的包

创建并记录包含R6类的包,r,class,rstudio,R,Class,Rstudio,感谢RStudio、devtools和roxygen2,我目前正在用R6类创建我的第一个R包(:D)。当我的包只包含函数时,我可以毫无问题地构建和加载它。但是当我想要记录R6类(在这个包中有“Node”这样的字段和方法)时,RStudio不想构建这个包。我试图在论坛上找到诀窍,但关于这个问题的信息非常稀少 我的程序: 打开Rstudio,创建一个新项目,我选择“R包” 我填写包的名称,并选择包所基于的源文件(一个函数和三个类) ->在这一点上,这个过程是正常的,因为我用“man”获得了正确的结构

感谢RStudio、devtools和roxygen2,我目前正在用R6类创建我的第一个R包(:D)。当我的包只包含函数时,我可以毫无问题地构建和加载它。但是当我想要记录R6类(在这个包中有“Node”这样的字段和方法)时,RStudio不想构建这个包。我试图在论坛上找到诀窍,但关于这个问题的信息非常稀少

我的程序:

  • 打开Rstudio,创建一个新项目,我选择“R包”
  • 我填写包的名称,并选择包所基于的源文件(一个函数和三个类)
  • ->在这一点上,这个过程是正常的,因为我用“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:)

    提前感谢您的帮助


    Cha

    非常感谢McFlick

    我刚刚收到R6Class软件包开发人员的答复。他们告诉我,我只需要添加一行

    importFrom(R6, R6Class)
    
    在名称空间文件中。而且它工作正常!!!(我永远不会发现它是孤独的:S)

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

    最后他们推荐了一本书,我想我会读的


    再次感谢大家

    也许您应该在使用R6类的.R文件中包含以下内容,并让“devtools”负责创建名称空间文件

    #' @importFrom R6 R6Class   
    


    您已经共享了所获得的错误,但没有共享生成该错误的实际代码。请提供一个最低限度的事实上,没有那么多的代码,因为我做了所有的过程与RStudio(如我在我的问题中详细提到的步骤)。我只有我的R6class代码(一个非常基本的代码):elem更一般地说,如果您计划使用来自不同包的函数(或类似函数的对象),我相信您需要执行此处所述的操作(
    importFrom(package,function)
    中的
    名称空间
    )或者在使用函数直接引用它来自的包时使用
    ::
    运算符(
    package::function
    )。在这种情况下,在定义类时,将使用
    R6::R6Class
    > devtools::check() # Will create the NAMESPACE file for you