如何在全局环境中加载包的内部功能

Sti*_*ijn 3 r

我有一个包,其内部函数我想在全局环境中加载.我能想到的唯一方法是手动完成,即

f <- packageName:::someInternalFunction
Run Code Online (Sandbox Code Playgroud)

适用于所有内部功能.我猜这是一种更简单的方法,但是怎么做?提前致谢.

Tyl*_*ker 8

您可以执行以下操作:

library(pacman)

pack.name <- "qdap"

hidden <- setdiff(p_funs(pack.name, TRUE), p_funs(pack.name))

invisible(lapply(hidden, function(x) {

    a <- strtrim(x, 1) == "%" 
    b <- substring(x, nchar(x)) == "%"

    if (a && b) {
        x2 <- paste0("`", x, "`")
    } else {
        x2 <- x
    }

    assign(x, eval(parse(text=paste0(pack.name, ":::", x2))), 
        envir = .GlobalEnv)
}))
Run Code Online (Sandbox Code Playgroud)


小智 8

以包pacman为例:

attach(loadNamespace("pacman"), name = "pacman_all")
Run Code Online (Sandbox Code Playgroud)

现在它所有未导出的函数都可用。您可以看到附带的“pacman_all” search()

要恢复,请运行detach("pacman_all")