【问题标题】:Referring to other function inside a local R package引用本地 R 包中的其他函数
【发布时间】:2016-11-29 19:39:27
【问题描述】:

我正在编写一个我打算用于分析的本地包(而不是像以前那样使用脚本)。我很难理解 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.
}

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

编辑:通过虚拟代码还不够好。修改它。我认为我误解的根源是我希望附加代码,但显然不是这样。

【问题讨论】:

  • 如果你让它打印(“b”)还会发生这种情况吗?
  • @Roland 我编辑了我的伪代码,在函数 cc() 中它确实有效。

标签: r


【解决方案1】:

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

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

要使用未在包外导出的函数,您可以使用以下合成器:your_package:::b()

请参阅 r-pkgs 上的 namespace 部分以获得更详细的说明。

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 2019-09-28
    • 2022-07-12
    • 2019-04-08
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多