R:使用devtools自动将导入(data.table)添加到NAMESPACE

Akh*_*air 2 namespaces r devtools

如何使用自动正确添加import(data.table)NAMESPACE文件devtools

一般来说,如果我的包使用data.table我只是手动编写,但是我不能正确地使用@exportdevtools::document创建NAMESPACE文件,因为它要么覆盖我做的添加,要么根本不更新文件.

此外,它说不要手动编辑它...

谢谢


示例package/R/function.R代码

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

调用示例

> 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 ":=" 
Run Code Online (Sandbox Code Playgroud)

Hon*_*Ooi 5

您可能根本不应该使用import(*),除非您确实需要包中的每个导出对象.相反,用于importFrom(pkg, obj1, obj2, ...)仅导入您需要的对象.

Writing R Extensions手册,S1.5.1:

importFrom有选择地使用而不是import良好的做法,特别是当从具有十几个出口的包中导入时.

尽管如此,如果您确实需要导入所有内容,请使用#' @import data.table.

  • `data.table`实际上是我将`导入'所有东西的少数几个包之一. (2认同)
  • @AkhilNair 该方法是`[.data.table`,但您无法导入它,因为它没有导出。我怀疑您可以有选择地从 data.table 导入并仍然使用 data.table 本身。您可以有选择地从 data.table 导入一些函数,但据我所知,不是那些创建核心功能的函数。 (2认同)