引用本地 R 包中的其他函数

Oze*_*uss 1 r

我正在编写一个打算用于分析的本地包(而不是像现在一样使用脚本)。我在理解 R 的这种获取/范围界定方式时遇到了一些困难。假设我有一个 R/some_functions.R 文件,其中包含:

#' function a
#' @export
a <- function(a) {
  print(a)
}

#' function b, not exporting
b <- function(b) {
  print(b)
}

#' function c
cc <- function() {
  a("cat") # will run
  b("dog") # will not run, can't find function.
}
Run Code Online (Sandbox Code Playgroud)

我知道当我安装/加载包时,可以通过 NAMESPACE 访问函数“a”,但我仍然希望函数“b”在内部可用。由于我是该包的唯一预期用户,我可以导出所有内容,但我想知道正确的方法。只是出口?采购?使用 devtools::load_all?

编辑:通过虚拟代码还不够好。修改了它。我认为我的误解的根源在于我期望附加代码,但事实显然并非如此。

den*_*rou 5

你是对的,当你导出一个函数时,它会在加载包时可用。编写包时,您应该只导出对包实现的功能至关重要的函数。

也就是说,您在包中编写的每个函数都可以在包内使用,无论是否导出。

要使用未导出到包外部的函数,您可以使用此 Syntax: your_package:::b()

有关更详细的说明,请参阅r-pkgs 上的命名空间部分。