Jak zaimportować tylko jedną funkcję z innego pakietu, bez ładowania całej przestrzeni nazw
Załóżmy, że tworzę pakiet o nazwiefoo
, który chciałby użyćdescription
funkcja zmemisc
pakiet. Nie chcę importować całościmemisc
przestrzeń nazw, ponieważ:
memisc
zastępuje bazęaggregate.formula
funkcja, która łamie kilka rzeczy. Na przykład,example(aggregate)
zawiodłoby żałośnie.Pakiet zawiera następujące pliki:
OPIS
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)
}
Myślę, że to skorzystamimportFrom
nie ładowałby całegomemisc
przestrzeń nazw, ale tylkonamespace::description
, ale tak nie jest. Począwszy od wanilii 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
Czy wiesz, jak mogę importowaćdescription
funkcja zmemisc
bez dostaniaaggregate.formula
w moim środowisku?