2016-11-29 16 views
0

我正在编写一个本地包,我打算用于分析(而不是像我之前所做的那样使用脚本)。通过这种方式了解R的采购/范围界限,我有些困难。说我有一个R/some_functions.R文件,其中包含:引用本地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”是通过命名空间访问,当我安装/加载包,但我仍有望功能“B”至在内部可用。由于我是软件包唯一的用户,我可以导出所有文件,但我想知道正确的方法。 只是出口?采购?使用devtools :: load_all?

编辑:由虚拟代码是不够好的。修改它。我认为我误解的根源是我期待代码被附加,显然不是这样。

+0

如果您让它打印(“b”),还会发生吗? – Roland

+0

@Roland我编辑了我的伪代码,在函数cc()中实际工作。 – Ozeuss

回答

4

你是对的,当你导出一个函数时,它将在包被加载时可用。 写封装时,应该只导出对封装实现的功能。

也就是说,您在软件包中编写的每个函数都可以在软件包中使用,不管是否导出。

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

有关r-pkgs的更多详细说明,请参阅namespace部分。

相关问题