我正在编写一个我打算用于分析的本地包(而不是像我之前那样使用脚本)。我在理解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.
}
我知道在安装/加载软件包时可以通过NAMESPACE访问函数“a”,但我仍然期望函数“b”在内部可用。由于我是该软件包的唯一预期用户,我可以导出所有,但我想知道正确的方法。 刚出口?采购?使用devtools :: load_all?
编辑:虚拟代码不够好。修改它。我认为我的误解的根源是我期待附加代码,显然情况并非如此。答案 0 :(得分:4)
你是对的,当你导出一个函数时,它会在加载包时可用。 在编写包时,您应该只导出对包实现的功能至关重要的功能。
也就是说,您在包装中编写的每个功能都可以在包装内部使用,不论是否已导出。
要使用未在包外导出的函数,可以使用此synthax:your_package:::b()
。
有关更详细的说明,请参阅r-pkgs的namespace部分。