2016-11-30 25 views
2

如何使用devtools自動將import(data.table)自動正確地添加到NAMESPACE文件中?R:使用devtools自動添加import(data.table)到NAMESPACE

一般來說,如果我的包使用data.table我只是把它寫在手動,但我不能使用@exportdevtools::document正確地創建了NAMESPACE文件,因爲它要麼會覆蓋我做加法,或者不更新該文件在所有。

此外,它說沒有手動編輯...

感謝


樣品package/R/function.R代碼

#' @export 
#' @import data.table 
test_data_table = function(dt) { 
    dt[, a := 3] 
} 

調用示例

> test_data_table 
function(dt) { 
    dt[, a := 3] 
} 
<environment: namespace:package> 

> test_data_table(dt) 
Show Traceback 

Rerun with Debug 
Error in `[.data.frame`(x, i, j) : could not find function ":=" 

回答

4

你可能不應該使用import(*)可言,除非你真的需要從每包導出對象。相反,使用importFrom(pkg, obj1, obj2, ...)僅導入您需要的對象。

寫作R附加手動,S1.5.1:

Using importFrom selectively rather than import is good practice and recommended notably when importing from packages with more than a dozen exports.

不過,如果你需要進口的一切,用#' @import data.table

+2

'data.table'實際上是在那裏我會'import'一切幾個包之一。 – Roland

+0

嗯,我想問題是它的語法。我理解我使用'importFrom(data.table,data.table。[)'? –

+1

@AkhilNair該方法是'[.data.table',但不能導入它,因爲它沒有被導出。我懷疑你可以有選擇地從data.table導入,並仍然使用data.table本身。有些函數可以選擇性地從data.table中導入,但AFAIK不是那些創建核心功能的函數。 – Roland