我只需要一个R函数,如:
> la. <- function (envir = globalenv()) {ls(all = T, envir = envir) }`
具有有效的绑定,所以我需要输入方括号
> makeActiveBinding('la', la., globalenv())
如此
> la
[1] "la" "la."
我现在想实现函数la()
并将其绑定la
到一个包中
这样,当我加载程序包时,la
就可以使用了。
如何在包环境中将功能la.()
绑定到符号la
?
我应将什么值传递给函数envir
的{{1}}自变量
感谢您的帮助
答案 0 :(得分:1)
这可能是在.onLoad
函数中要做的事情,在您的软件包中是这样的:
NAMESPACE <- environment()
la. <- function(){
ls(all = T, envir = globalenv())
}
.onLoad <- function(libname, pkgname) {
makeActiveBinding("la", la., NAMESPACE)
}
答案 1 :(得分:0)
我认为这应该可行:
让我们在包内编写两个函数:
# function one
ll_ <- function(){
ls(envir = globalenv(), all.names = TRUE)
}
# function two
l_ <- function(){
ls(envir = globalenv(), all.names = FALSE)
}
然后编写您的onLoad()函数
# Runs when package is loaeded
.onLoad <- function(libname, pkgname) {
ns <- asNamespace(pkgname)
makeActiveBinding("ll", ll_, env = ns)
makeActiveBinding("l", l_, env = ns)
namespaceExport(ns, c('ll','l'))
}
在装入软件包时,请命令l和ll。运行函数l()和ll()
最后,我可以肯定的是,通过将所有函数嵌入列表并使用函数,onLoad()的定义可能会变得更轻巧
感谢罗曼的建议