這個問題沒有明顯的結合是別人在這個問題上稍有不同 - 我確實有被稱爲變量「mypkgdata」:[R CMD檢查:爲全局變量「mypkgdata」
我寫一個包,其中船舶與數據集。該數據集是包內計算所需的。在DESCRIPTION文件中,我爲此指定了「LazyData」,這樣任何人加載包時數據集總是在附近。當我運行檢查,但是,我得到:
.getmodules2:全局變量「mypkgdata」
什麼是解決這個問題的正確途徑沒有明顯的約束力?
這個問題沒有明顯的結合是別人在這個問題上稍有不同 - 我確實有被稱爲變量「mypkgdata」:[R CMD檢查:爲全局變量「mypkgdata」
我寫一個包,其中船舶與數據集。該數據集是包內計算所需的。在DESCRIPTION文件中,我爲此指定了「LazyData」,這樣任何人加載包時數據集總是在附近。當我運行檢查,但是,我得到:
.getmodules2:全局變量「mypkgdata」
什麼是解決這個問題的正確途徑沒有明顯的約束力?
以下是我如何解決它。我創建了一個包中的自定義環境,加載數據在此環境設置,並寫道,返回數據集的功能:
pkgEnv <- new.env(parent=emptyenv())
if(!exists("mypkgdata", pkgEnv)) {
data("mypkgdata", package="mypkg", envir=pkgEnv)
}
getMyPkgData <- function() {
pkgEnv[["mypkgdata"]]
}
而且在利用「mypkgdata」的功能,我寫:
mypkgdata <- getMyPkgData()
另外,我放棄了懶加載數據,因爲它不再是必要的。
如果你有LazyData:TRUE在你的描述文件比下面應該工作:
x <- MyPackageName::mypkgdata
# ... your calculations using x
我明白你還要注意,如果我TRIE沒有MyPackageName ::部分調用它。
我認爲來自包裝的數據不應被標記爲不可見。然而,一個解決方法是
if(getRversion() >= "2.15.1") utils::globalVariables("mypkgdata")