setkey() 在 R CMD 检查时生成注释 - 全局变量没有可见绑定

Posted

技术标签:

【中文标题】setkey() 在 R CMD 检查时生成注释 - 全局变量没有可见绑定【英文标题】:setkey() generating note on R CMD check - no visible binding for global variable 【发布时间】:2015-11-21 10:31:37 【问题描述】:

我创建了一个 R 包并将其提交给 CRAN。 CMD 检查输出 1 注意:

有趣:全局变量“id”没有可见的绑定

CRAN 建议我修复它。

fun()(我的功能之一)是一个自定义导入,用于读取由另一个软件创建的文件。 这些文件是非常大的数据集。因此,由于我在优化导入,所以我使用 data.table 和 set key,这不仅有助于提高性能,而且是运行 foverlaps() 等后续函数所必需的。

我正在使用:

data.table::setDT(dataImport)

data.table::setkey(dataImport, id)

为什么 setkey() 会创建这个笔记?

如何在不创建笔记的情况下设置键?

以下 QA (What is the purpose of setting a key in data.table?) 对于理解 setkey() 非常有用,但无论是 this 还是 data.table 文档似乎都没有为这个特定问题的出现提供任何线索(我发现)。 谢谢

更新 - 如果我遇到此问题的功能的要点如下。

readoqcsv <- function(x) dataImport <- utils::read.table(file = x, header = TRUE, sep = "," , dec = "." , colClasses = c("character", "integer", "character", "character", "integer", "NULL", "NULL", "NULL", "integer", "NULL", "NULL", "NULL", "NULL", "factor", "NULL", "NULL", "NULL", "NULL", "NULL"), comment.char = "")

data.table::setDT(dataImport)


dataImport$timeStampO <- strptime(dataImport$timeStampO, "%m/%d/%y  %H:%M")

dataImport$session_started <- strptime(dataImport$session_started,"%m/%d/%y  %H:%M")

dataImport$session_finished &lt;- strptime(dataImport$session_finished,"%m/%d/%y %H:%M")

dataImport$id &lt;- c(1:nrow(dataImport))

下面是(如果运行)引起注意的行:

# data.table::setkey(dataImport, id)

return(dataImport)

【问题讨论】:

我通常在函数中添加一行类似于id &lt;- NULL 的内容。 比如我做了什么here. 还有:stat.ethz.ch/R-manual/R-devel/library/utils/html/… @Ananda 谢谢,这很有用。仍然没有解决我的问题......发现一些有趣的新信息并且可能相关,您可能会感兴趣:***.com/questions/31132552/… Ananda 的解决方案应该有效。不知道为什么。也许这里的另一个解决方法是使用 setkeyv()cols = "id" 代替。 setkey() 的设计考虑了交互式案例。 【参考方案1】:

按照 Arun 的建议,在我的情况下,将函数 setkey() 替换为 setkeyv()

这会创建一个 CMD 检查注意:

data.table::setkey(dataImport, id)

这可以免费运行:

data.table::setkeyv(dataImport, cols = "id")

基于data.table documentation,使用 setkeyv() 似乎等效。 @Arun 如果我错了,请纠正我! 就结果而言,我的函数仍然通过了我对 class、colnames 和 ncol 的自动化测试。

无论如何,Arun 提到 setkey() 的创建考虑了交互使用,因此它似乎不适合在函数和/或包中使用。

对于 CMD NOTES“全局变量没有可见绑定”还有一些其他建议,例如信息质量保证:

How can I handle R CMD check "no visible binding for global variable" notes when my ggplot2 syntax is sensible?

No visible binding for global variable Note in R CMD check

关于“无可见绑定...”问题的主题倾向于将其作为一个问题来解决。它似乎基于其来源(症状),即 CMD 检查。然而,尽管许多动作引发了相同的标志(症状),但在更深层次上,它们可能是由不同的动作(条件)产生的。

我喜欢这里使用的解决方案,由 Arun 指出,因为它解决了使用此功能的特定情况(条件,而不是症状)。与上面链接中提到的其他解决方案不同,如果更通用的话,可能同样合法。 当然,这种方法意味着找出 究竟 是什么导致了这个音符,并找到替代方法。

【讨论】:

以上是关于setkey() 在 R CMD 检查时生成注释 - 全局变量没有可见绑定的主要内容,如果未能解决你的问题,请参考以下文章

R CMD检查中的全局变量注释没有可见的绑定

CRAN 包检查和 R CMD 检查-as--cran 之间的差异

Redis批量导入数据

java基础-注释

在 Spring Boot 中自动生成 API 文档 [关闭]

R CMD 检查:全局变量没有可见绑定(使用包中的数据/数据集时)