R CMD check package遇到Error: cannot add bindings to a locked environment错误

错误的产生:
在一个函数中除了写入子函数以外,还写了一些类(class)在其中,R CMD check时提示Error: cannot add bindings to a locked environment。
错误的解决:
将setClass放在函数的外面,即放在Global environment中。
原因:
For calls to setClass() appearing in the source code for a package, will default to the namespace of the package. For calls typed or sourced at the top level in a session, will default to the global environment.也就是说,当我们在制作一个package时,翻译器会首先对global environment进行初始化,而后将其锁住。而之后当使用到某个函数时,才去读取该环境下的具体函数。如果这个时候,函数内部再出现setClass时,如果使用default的where参数话,它会申请在global environment中注册这个类。而这时global environment已经被锁住了,所以这个时候就会提示错误。

发表评论

电子邮件地址不会被公开。 必填项已用*标注