繁体   English   中英

导入包的所有功能,但在构建包时除外

[英]import all the functions of a package except one when building a 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 :: first。 还是有更好的方法来处理它? 每次有人进口包时,我都试图避免警告。 谢谢!

NAMESPACE文件在这里有点灵活,如编写R扩展中所述

两个主要的进口指令是:

import(PACKAGE)

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

importFrom(PACKAGE, foo)

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

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

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

它为您提供了PACKAGE命名空间的所有内容,但foo()bar() 这对于避免冲突很有用 - 就像你的情况一样。

对于roxygen,很好的了解你可以做到:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM