簡體   English   中英

R包編譯依賴於data.table

[英]R package compilation with dependency on data.table

我正在嘗試使用J of data.table創建一個帶有函數的R包。 當我運行R CMD check ,我有一個注意:'J'沒有可見的全局函數定義,盡管我在DESCRIPTION文件中添加了data.table作為依賴項。

套餐:rfPred
類型:包裝
標題:將rfPred功能預測分數分配給錯義變體列表
版本:1.0
日期:2013-03-14
作者:我
維護者:我
取決於:data.table
[..]

我試圖在我想要創建的包中使用data.table包的另一個函數,但是我和J.沒有相同的問題。

你有解決方案嗎 ?

作為獨立函數的J()已從data.table刪除。 它只適用於DT[...]內部,它仍然可以使用。 但是對於依賴於data.table和正確使用J() ,和你的一樣,需要額外的步驟來避免NOTE(見下文)。

首先是背景和為什么刪除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制作的NOTE R CMD check您的包裝

你的包使用DT[...]內的J()並且工作正常。 唯一的問題是來自R CMD檢查的注意:

no visible global function definition for 'J'

以下是所有已知選項:

  • 忽略NOTE。 (我不喜歡這個,但只是作為一種選擇)。 只需要處理警告和錯誤。
  • list替換J 它是等價的。
  • 在包中的某處定義J=NULL (我們查看了data.table導出J=NULL所以你不必但決定不這樣做,因為任何data.table用戶在提示符下輸入J會看到NULL ,這可能會令人困惑。)
  • 或者使用?utils::globalVariables作為Ben Bolker在評論中提出的建議。

關於此特定注釋的進一步背景是在此相關問題中:

全局變量沒有可見的綁定在R CMD檢查中注意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM