假设我正在开发一个名为 的包foo
,它想使用包中的description
函数memisc
。我不想导入整个memisc
命名空间,因为:
- 这是坏的
memisc
覆盖基本aggregate.formula
功能,这破坏了几件事。例如,example(aggregate)
会惨败。
该软件包包括以下文件:
描述
Package: foo
Version: 0.0
Title: Foo
Imports:
memisc
Collate:
'foo.R'
命名空间
export(bar)
importFrom(memisc,description)
R/foo.R
##' bar function
##'
##' @param x something
##' @return nothing
##' @importFrom memisc description
##' @export
`bar` <- function(x) {
description(x)
}
我认为 usingimportFrom
不会加载整个memisc
命名空间,而只会加载namespace::description
,但事实并非如此。从香草 R 开始:
R> getS3method("aggregate","formula")
## ... function code ...
## <environment: namespace:stats>
R> library(foo)
R> getS3method("aggregate","formula")
## ... function code ...
## <environment: namespace:memisc>
R> example(aggregate)
## Fails
那么,您知道如何在不进入我的环境的情况下导入description
函数吗?memisc
aggregate.formula