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