2 回答

TA貢獻1871條經驗 獲得超8個贊
FAQ 6.9:我創建了一個依賴于data.table的包。如何確保我的包是data.table-aware,以便從data.frame繼承?
要么i)包含data.table
在Depends:
DESCRIPTION文件的字段中,要么ii)包含data.table
在Imports:
DESCRIPTION文件的字段中和import(data.table)
NAMESPACE文件中。
進一步的背景...在[.data.table
(和其他data.table
功能)的頂部,你會看到一個開關取決于調用的結果cedta()
。這代表呼叫環境數據表感知。打字data.table:::cedta
顯示它是如何完成的。它依賴于具有命名空間的調用包,以及該命名空間Import'ing或Depend'ing on?data.table
。這是如何data.table
傳遞給非data.table-aware包(例如函數base
)和那些包可以使用絕對標準的[.data.frame
語法data.table
,幸福地不知道data.frame
?is()
a?data.table
。
這也是data.table
繼承不習慣與無命名空間包兼容的原因,以及為什么在用戶請求時我們不得不要求這些包的作者在其包中添加一個名稱空間以便兼容。令人高興的是,現在R為缺少一個(從v2.14.0開始)的軟件包添加了一個默認命名空間,這個問題已經消失了:
更改版本2.14.0?
*所有軟件包都必須具有命名空間,如果源中未提供,則會在安裝時創建一個。
- 2 回答
- 0 關注
- 635 瀏覽
添加回答
舉報