代码之家  ›  专栏  ›  技术社区  ›  Julien Massardier

在生成包时导入包的所有功能,但一个除外

  •  2
  • Julien Massardier  · 技术社区  · 8 年前

    我的包 肌肉治疗包 ).

    Imports: data.table, myotherpackage 在的描述文件中 我的包

    肌肉治疗包 导入dplyr,它有几个名为data.table的函数,所以每次加载时都会收到这样的警告 我的包

    Warning: replacing previous import ‘data.table::first’ by ‘dplyr::first’ when loading ‘mypackage’

    是否有方法导入data.table中除“first”之外的所有函数?如果需要的话,我会先在代码中使用data.table::。 还是有更好的方法来处理?每次有人导入包时,我都尽量避免警告。谢谢您!

    1 回复  |  直到 8 年前
        1
  •  10
  •   Thomas user3246149    8 年前

    命名空间文件在这里有点灵活,如中所述 Writing R Extensions .

    两个主要的导入指令是:

    import(PACKAGE)
    

    将命名空间中的所有对象导入到包中。第二个选项是使用以下命令执行特定导入:

    importFrom(PACKAGE, foo)
    

    让你有机会 foo() 不需要完全合格的参考资料 PACKAGE::foo() .

    但这并不是唯一的两个选择。您也可以使用 except

    import(PACKAGE, except=c(foo,bar))
    

    它提供了包的名称空间中的所有内容,但是 福() 和 bar() . 这对避免冲突很有用,就像你的例子一样。

    #' @rawNamespace import(PACKAGE, except = foo)
    

    通过roxygen传递原始命名空间指令。