2015-04-30 21 views
7

我正在研究使用sp包中的spTransform函數的R包。擦的是,加載這一功能需要rgdal工作,否則我得到一個錯誤信息:編寫R包:需要包我沒有明確地調用

Error in eval(expr, envir, enclos) : load package rgdal for spTransform methods 

我在DESCRIPTION文件Imports語句包括以下內容:

Imports: sp, 
    rgdal 

但我仍然得到錯誤。 但是,如果我在使用軟件包之前顯式加載rgdal(使用library(rgdal)),一切正常。我猜測,當我的包被加載rgdal沒有附加,因爲我的代碼沒有使用它通過::

所以我想我的問題是:我如何使我的包附加一個包,我不是明確使用?

+2

這已經出現在r-dev郵件列表中。我認爲你還需要在你的NAMESPACE文件中使用正確的規格。 –

+0

你可以顯示你的NAMESPACE文件的外觀嗎? – BrodieG

+0

如果包沒有它並且需要使用名稱空間,它可能應該包含在Imports中。我很猶豫要說取決於,但可能也是這樣/相反 –

回答

7

BondedDust所述,您需要將所需的軟件包導入到您的軟件包NAMESPACE中。要這樣做編輯文件,添加一個新行import(sp,rgdal)。進一步閱讀http://cran.r-project.org/doc/manuals/r-release/R-exts.html#Specifying-imports-and-exports

+0

我建議不要手動編輯'NAMESPACE' - 'roxygen2' http://cran.rstudio.com/web/packages/roxygen2/可以讓生活更輕鬆 – sckott

+0

所以,下面這個答案和http://stackoverflow.com/questions/8597993/does-roxygen2-automatically-write-namespace-directives-for-imports-packages我在函數上面添加了一個'#'@import rgdal'指令使用'spTransform'然後運行'devtools :: document()'。這正確地將'import(rgdal)'調用添加到'NAMESPACE' – blindjesse