我注意到在检查一个包时,当我使用像 subset
这样使用列表元素的逐字名称作为参数的函数时,我得到了注释“全局变量没有可见的绑定(bind)”。
例如使用数据框:
foo <- data.frame(a=c(TRUE,FALSE,TRUE),b=1:3)
我可以做一些愚蠢的事情,例如:
subset(foo,a)
transform(foo,a=b)
按预期工作。然而,R CMD 中的 R 代码检查不理解这些引用元素,并提示没有任何可见的全局变量绑定(bind)。
虽然这工作正常,但我不太喜欢在我的包中添加注释,并且更喜欢它在没有错误、警告和注释的情况下通过检查。我也不想过多地修改我的代码。有没有办法编写这些代码,以便清楚地表明参数不引用全局变量?
最佳答案
要使其通过 R CMD 检查
,您可以:
- 使用
get("b")
(但这很麻烦) - 将
a=b=NULL
放在函数中更高的位置(这就是我所做的)
不久前,r-devel 上有一个帖子,来自 r-core 的人基本上说(凭内存)“注释没问题,你知道。假设作者检查了它并且对注释没问题。” 。但是,我同意你的观点。我确实更喜欢让 CRAN 检查在所有平台上返回干净的“OK”。这样用户就可以毫无疑问地通过检查。
编辑:
这是r-devel thread我记得(从2010年4月开始)。因此,这似乎表明在某些情况下没有已知的方法来避免注释,但没关系。
关于r - R CMD 检查中的全局变量注释没有可见绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096313/