导入软件包的所有功能(构建软件包时除外)

时间:2018-08-17 16:03:53

标签: r import dependencies r-package

我正在构建一个R包( mypackage ),该包将导入data.table和另一个包(我们将其称为 myotherpackage )。

Imports: data.table, myotherpackage mypackage 的Description文件中。

myotherpackage 导入了dplyr,它具有多个名为data.table函数的函数,因此每次加载 mypackage 时都会收到类似的警告:

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

是否有一种方法可以导入data.table的所有功能,例如“ first”除外?然后,如果需要使用代码,请先在代码中使用data.table :::。 还是有更好的方法来处理它?我试图避免每次有人导入软件包时发出警告。谢谢!

1 个答案:

答案 0 :(得分:5)

NAME Writing R Extensions中所述的NAMESPACE文件在此具有一定的灵活性。

两个主要的导入指令是:

import(PACKAGE)

会将名称空间中的所有对象导入到您的包中。第二种选择是使用以下方法进行特定的导入:

importFrom(PACKAGE, foo)

使您可以访问foo(),而无需完全限定的引用PACKAGE::foo()

但这不是唯一的两个选择。您还可以使用except参数来排除少量导入:

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

为您提供PACKAGE名称空间中除了foo()bar()之外的所有内容。与您的情况一样,这对避免冲突很有用。

对于氧气而言,要弄清楚自己可以做的事情很重要:

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

通过roxygen传递原始的NAMESPACE指令。