我正在开发一个R包,但我想将其分解为两个包, 说A和B,其中B取决于A.
在开发过程中,我创建了许多内部实用程序 函数,例如.util1(),. util2()等。它们很有用 我的代码整洁,避免重复,但我不想导出它们并制作它们 其他用户可以使用。
不是在A和B中都有这些函数的一个副本,我的想法是将它们全部放在包A中,然后使用B :::。util1(),...等从A访问它们。另一方面,它看起来不是很整洁,我将不得不在某处记录所有这些“隐藏”的依赖关系(假设我不会从A中明确地导出它们)。还有其他选择吗?谢谢!
答案 0 :(得分:2)
如何使用“zoo”包及其内部变量“.packageName”进行说明。测试时,您可以用包的名称和内部变量/函数替换它们。
library(zoo) # Load a library
zoo:::.packageName # Access an internal variable
.packageName # A test - Fail to call without the Namespace
pkg.env <- getNamespace("zoo") # Store the Namespace
attach(pkg.env) # Attach it
.packageName # Succeed to call directly !
detach(pkg.env) # Detach it afterward
(编辑)的
## To export an internal object to the current Namespace (without "attach")
assign(".packageName",get(".packageName",envir=pkg.env))
## Or using a loop if you have a few of internal objects to export
for (obj_name in a_list_of_names) {
assign(obj_name,get(obj_name,envir=pkg.env))
}