【问题标题】:R: Added import(data.table) to NAMESPACE automatically using devtoolsR:使用 devtools 自动将 import(data.table) 添加到 NAMESPACE
【发布时间】:2017-04-14 19:16:30
【问题描述】:

如何使用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 ":=" 

【问题讨论】:

    标签: r namespaces devtools


    【解决方案1】:

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

    来自 Writing R Extensions 手册,S1.5.1:

    有选择地使用importFrom 而不是import 是一种很好的做法,特别是在从具有十几个导出的包中导入时建议这样做。

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

    【讨论】:

    • data.table 实际上是少数几个我会import 一切的软件包之一。
    • 嗯,我想问题在于它的语法。我可以理解我使用importFrom(data.table, data.table.[)吗?
    • @AkhilNair 方法是[.data.table,但是因为没有导出,所以不能导入。我怀疑您可以有选择地从 data.table 导入并且仍然使用 data.table 本身。您可以从 data.table 有选择地导入一些功能,但 AFAIK 不能创建核心功能。
    • @Roland,我认为这一切都意味着它应该像我添加到 OP 中的 sn-p 一样完成。如果是这样,使用该代码我仍然会收到 could not find := 错误。
    • @Roland Oops - 抱歉,这太愚蠢了。在修复时,我仍然看到一个错误(OP 中的澄清)
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多