R包编译依赖于data.table

use*_*834 10 r data.table

我正在尝试使用Jdata.table 创建一个带有函数的R包.当我运行时R CMD check,我有一个注意:'J'没有可见的全局函数定义,尽管我已经在DESCRIPTION文件中添加了data.table作为依赖项.

包:rfPred
类型:包
标题:将rfPred功能预测分数分配给错误变体列表
版本:1 . 0日期
:2013-03-14
作者:me
维护者:我
取决于:data.table
[..]

我试图在我想要创建的包中使用data.table包的另一个函数,但是我和J.没有相同的问题.

你有解决方案吗 ?

Mat*_*wle 10

J()作为一个独立的功能已被删除data.table.它仅适用于内部DT[...],仍然可以使用.但对于依赖data.tableJ()正确使用的包装,与您的包装一样,需要额外的步骤来避免注意(见下文).

首先是背景和原因J()被删除.来自新闻的摘录:

v1.8.2(2012年7月):

  • J [)别名现在在DT [...]之外被弃用,但仍然可以在DT [...]内部工作,如DT [J(...)].J()与包XLConnect(#1747)和rJava(#2045)中的函数J()冲突.对于data.table更改更容易,也有一些效率优势.当在DT [...]之外使用时,下一版本的data.table将从J()发出警告.之后的版本将删除它.只有这样才能解决与rJava和XLConnect的冲突.请在DT [...]之外直接使用data.table()而不是J().

v1.8.4(2012年11月):

  • J()现在发出一个警告(当 DT [...]之外使用时),不推荐在DT [...]之外使用它.见v1.8.2中的以下项目.在DT [...]之外直接使用data.table()而不是J().或者,自己定义别名.J()将继续 DT [...] 内部工作.

v1.8.8(现在CRAN,2013年3月):

  • J()别名现在 DT [...] 之外删除,但仍然可以在DT [...]内部工作; 即,DT [J(...)]没问题.正如在v1.8.2中所述(在此文件中见下文)并在v1.8.4中弃用了warning().这解决了与包XLConnect(#1747)和rJava(#2045)中的函数J()的冲突.请在DT [...]之外直接使用data.table()而不是J().

顺便说一句,最近还有一个关于r-devel的相关主题:http:
//r.789695.n4.nabble.com/conflict-between-rJava-and-data-table-tp4659935p4659984.html

现在为R CMD check您的包装上产生的注意事项

你的包裹在J()里面使用DT[...]并且工作正常.唯一的问题是来自R CMD检查的注意:

no visible global function definition for 'J'
Run Code Online (Sandbox Code Playgroud)

以下是所有已知选项:

  • 忽略NOTE.(我不喜欢这个,但只是作为一种选择).只需要处理警告和错误.
  • 替换Jlist.它是等价的.
  • 定义J=NULL包中的某个位置.(我们查看了data.table导出,J=NULL因此您不必决定不这样做,因为任何data.table用户J在提示符处输入都会看到NULL哪些可能会令人困惑.)
  • 或者?utils::globalVariables像Ben Bolker在评论中建议的那样使用.

关于此特定注释的进一步背景是在此相关问题中:

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

  • 好.它适用于J = NULL.非常感谢您的帮助 (2认同)