我正在开发程序包(https://github.com/dpmcsuss/iGraphMatch/)。
我刚开始使用devtools::check()
等来检查问题。目前,我没有收到任何错误,警告或注释(是)。
[不幸的是,有时我想使用devtools::check_man()
只是检查文档中的问题,因为这样做应该更快。运行此命令时,将得到以下输出。
> devtools::check_man()
Updating iGraphMatch documentation
Loading iGraphMatch
Writing NAMESPACE
Writing NAMESPACE
Checking documentation...
Error: cannot source package code:
cannot add bindings to a locked environment
我尝试过分离软件包,卸载名称空间,确保文件没有被锁定,卸载软件包,...。似乎没有什么不同。
如果我制作一个新包装,一切正常。我意识到这远不是一个最低限度的工作示例,但是我不确定从哪里开始寻找。任何建议,将不胜感激。 (我还没有探索的一件事是订单是否已记录在案。)
这看起来像R中的错误。如果删除setClass
中的matrix_list.R
以外的所有代码,仍然会收到错误。如果您删除matrix_list.R
文件,而没有其他任何内容,则不会。
如果使用tools::checkDocStyle(dir = "iGraphMatch")
,就会发生这种情况,根本不需要devtools
。
我的结论是,tools :: checkDocStyle函数和S4 methods::setClass
之间存在一些不兼容。我不知道是否有解决方法。
编辑添加:此错误有一个相当简单的解决方法。代替使用代码
matrix_list <- setClass("matrix_list", contains = "list")
在matrix_list.R
文件中,使用几乎相同的代码:
setClass("matrix_list", contains = "list")
matrix_list <- function(...)
new("matrix_list", ...)
这可避免触发tools::checkDocStyle
中的错误。它并不完全相同,因为原始对象在生成器函数上添加了一些额外的属性,但可能应该足够接近。