我有一个包,其内部函数我想在全局环境中加载.我能想到的唯一方法是手动完成,即
f <- packageName:::someInternalFunction
Run Code Online (Sandbox Code Playgroud)
适用于所有内部功能.我猜这是一种更简单的方法,但是怎么做?提前致谢.
您可以执行以下操作:
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")。