2015-05-20 45 views
0

這個問題沒有明顯的結合是別人在這個問題上稍有不同 - 我確實有被稱爲變量「mypkgdata」:[R CMD檢查:爲全局變量「mypkgdata」

我寫一個包,其中船舶與數據集。該數據集是包內計算所需的。在DESCRIPTION文件中,我爲此指定了「LazyData」,這樣任何人加載包時數據集總是在附近。當我運行檢查,但是,我得到:

.getmodules2:全局變量「mypkgdata」

什麼是解決這個問題的正確途徑沒有明顯的約束力?

回答

0

以下是我如何解決它。我創建了一個包中的自定義環境,加載數據在此環境設置,並寫道,返回數據集的功能:

pkgEnv <- new.env(parent=emptyenv()) 

if(!exists("mypkgdata", pkgEnv)) { 
    data("mypkgdata", package="mypkg", envir=pkgEnv) 
} 

getMyPkgData <- function() { 
    pkgEnv[["mypkgdata"]] 
} 

而且在利用「mypkgdata」的功能,我寫:

mypkgdata <- getMyPkgData() 

另外,我放棄了懶加載數據,因爲它不再是必要的。

1

如果你有LazyData:TRUE在你的描述文件比下面應該工作:

x <- MyPackageName::mypkgdata 
# ... your calculations using x 

我明白你還要注意,如果我TRIE沒有MyPackageName ::部分調用它。