Как импортировать только одну функцию из другого пакета, без загрузки всего пространства имен
Предположим, я разрабатываю пакет под названиемfoo
, который хотел бы использоватьdescription
функция отmemisc
пакет. Я не хочу импортировать весьmemisc
пространство имен, потому что:
memisc
переопределяет базуaggregate.formula
функция, которая ломает несколько вещей. Например,example(aggregate)
с треском провалится.В пакет входят следующие файлы:
ОПИСАНИЕ
Package: foo
Version: 0.0
Title: Foo
Imports:
memisc
Collate:
'foo.R'
NAMESPACE
export(bar)
importFrom(memisc,description)
R / foo.R
##' bar function
##'
##' @param x something
##' @return nothing
##' @importFrom memisc description
##' @export
`bar` <- function(x) {
description(x)
}
Я думаю, что с помощьюimportFrom
не будет загружать весь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
в моей среде?