【问题标题】:Import from `.` `data.table` so that lintr recognizes it从 `.` `data.table` 导入,以便 lintr 识别它
【发布时间】:2019-09-18 06:00:21
【问题描述】:

在使用 data.table 的 R 函数上运行 lintr 时,我收到以下警告:

warning: no visible global function definition for '.', Did you mean '-'?  

我认为一个简单的解决方法是添加importFrom data.table .。我也尝试用反引号引用点,但它似乎并没有被导出。解决此错误的推荐方法是什么?

我可以添加一行

`.` <- function(){}

在某个地方,但我没有让它工作,而且它很hacky。

【问题讨论】:

  • . 不是函数。 data.table replaces it with list 在计算表达式之前。如果你只是想给列表起别名,你可以定义. &lt;- list(但效率稍低)。
  • 感谢您的见解,我看到 data.table 开发人员竭尽全力不给它起别名,所以我现在不愿意自己这样做。
  • 好吧,你为什么要导入.?如果你想使用data.table,我会导入整个包。
  • 现在我看到 . 甚至不是一个函数,我不想再导入 . 它了。我的目标只是摆脱 lintr 警告。
  • 我在使用时在我的包中定义了. &lt;- NULL。这样. 就被定义了,R CMD 检查很开心。

标签: r data.table lintr


【解决方案1】:

如果你尝试用双引号引用点怎么办? importFrom data.table "."

我知道这就是我为 magrittr 管道运算符完成导入的方式

如果这不起作用,您可以随时将. 添加到使用utils::globalVariables() 定义全局变量的globals.R 文件中

if(getRversion() >= "2.15.1")  utils::globalVariables(c("."))

【讨论】:

  • data.table 包中没有. 函数。因此,您不能从中导入此函数。
  • 啊,在这种情况下,您可以随时将. 添加为全局变量以防止出现此devtools::check() 警告
  • 这似乎可以让lintr闭嘴,谢谢。我会做一些进一步的测试,希望不会有任何微妙的问题。
  • 啊,我知道这是lintr 问题,而不是devtools 问题。我只记得在 devtools 方面处理过这个问题——很高兴这对lintr 也有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2019-12-20
  • 2018-04-18
  • 2018-06-10
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多