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 <- strptime(dataImport$session_finished,"%m/%d/%y %H:%M")
dataImport$id <- c(1:nrow(dataImport))
下面是(如果运行)引起注意的行:
# data.table::setkey(dataImport, id)
return(dataImport)
【问题讨论】:
我通常在函数中添加一行类似于id <- 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 检查时生成注释 - 全局变量没有可见绑定的主要内容,如果未能解决你的问题,请参考以下文章
CRAN 包检查和 R CMD 检查-as--cran 之间的差异