在构建包时导入包的所有功能,除了一个
import all the functions of a package except one when building a package
我正在构建一个导入 data.table 的 R 包 (mypackage) 和另一个包(我们称之为 myotherpackage ).
Imports: data.table, myotherpackage
在 mypackage 的描述文件中。
myotherpackage 导入 dplyr,它有几个函数命名为 data.table 函数,所以我每次加载 mypackage[= 时都会收到这样的警告27=]:
Warning: replacing previous import ‘data.table::first’ by ‘dplyr::first’ when loading ‘mypackage’
有没有办法导入 data.table 除了 "first" 之外的所有功能?如果我需要使用它,我会在代码中使用 data.table::first 。
或者有更好的方法来处理它吗?每次有人导入包时,我都试图避免警告。谢谢!
这里的 NAMESPACE 文件有些灵活,如 Writing R Extensions 中所述。
两个主要的导入指令是:
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 指令。
我正在构建一个导入 data.table 的 R 包 (mypackage) 和另一个包(我们称之为 myotherpackage ).
Imports: data.table, myotherpackage
在 mypackage 的描述文件中。
myotherpackage 导入 dplyr,它有几个函数命名为 data.table 函数,所以我每次加载 mypackage[= 时都会收到这样的警告27=]:
Warning: replacing previous import ‘data.table::first’ by ‘dplyr::first’ when loading ‘mypackage’
有没有办法导入 data.table 除了 "first" 之外的所有功能?如果我需要使用它,我会在代码中使用 data.table::first 。 或者有更好的方法来处理它吗?每次有人导入包时,我都试图避免警告。谢谢!
这里的 NAMESPACE 文件有些灵活,如 Writing R Extensions 中所述。
两个主要的导入指令是:
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 指令。