2016-11-29 44 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部分。

相關問題