如何管理两个R包共享的内部实用程序功能

时间:2013-12-10 15:19:48

标签: r package cran

我正在开发一个R包,但我想将其分解为两个包, 说A和B,其中B取决于A.

在开发过程中,我创建了许多内部实用程序 函数,例如.util1(),. util2()等。它们很有用 我的代码整洁,避免重复,但我不想导出它们并制作它们 其他用户可以使用。

不是在A和B中都有这些函数的一个副本,我的想法是将它们全部放在包A中,然后使用B :::。util1(),...等从A访问它们。另一方面,它看起来不是很整洁,我将不得不在某处记录所有这些“隐藏”的依赖关系(假设我不会从A中明确地导出它们)。还有其他选择吗?谢谢!

1 个答案:

答案 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))
}