我有一个包,其内部函数我想在全局环境中加载。我能想到的唯一方法是手动完成,即
f <- packageName:::someInternalFunction
适用于所有内部功能。我猜这是一种更简单的方法,但是怎么做?提前谢谢。
答案 0 :(得分:7)
您可以执行以下操作:
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)
}))
答案 1 :(得分:4)
使用包pacman
作为示例:
attach(loadNamespace("pacman"), name = "pacman_all")
现在所有未导出的功能都可用。您可以使用search()
查看附加的“pacman_all”。
要恢复,请运行detach("pacman_all")
。
答案 2 :(得分:2)
install.package(<path to mypackage>, type="source", repos=NULL)
library("mypackage")
你当然意识到依赖别人的内部功能是非常危险的,因为这些功能的行为容易在没有警告的情况下改变(这是他们内部的一个原因)。安装你自己的软件包修改版本可以减少这种危险,因为它可以让你更好地控制你正在调用的代码。