2012年12月21日 星期五

如何將 R package 上傳到 R CRAN

2014-08-29 更新說明:
下述方法已為較舊的方法,請各位先依序參考「利用 R-Studio 建立 R Package」、「利用 R-Studio 配合 Rcpp Package 建立包含 C/C++ Code 的 R Package」、「R CRAN 的 Package 上傳規範」及「R CRAN 的 Package 上傳流程」內文的新方法,待新方法無效時,再參考這篇!感謝各位!

# ==================================================
環境:Windows 7 / 64 bits; cmd.exe; R 2.15.2; Rtools 216

必須要有:自製的 R package (本篇為 new_package
_1.0 ,位置在 c:\new\ )
起始狀態:已建構好準備建立 package 的架構,並已編輯好所有 .Rd 檔案。

# ==================================================

Content

01.檢查套件(Checking the package)。
02.製作 .tar.gz 檔案。
03.將 .tar.gz 檔案上傳至 R CRAN 
04.寫信給管理者


# ==================================================

01.檢查套件(Checking the package)。
主要是檢查此套件是否符合文件編輯的規範,以及文件內所提供的例子是否發生錯誤。在檢查的過程當中,通常會有三種狀態,分別是 OK, Warning, and Error 。當出現 Warning 時,可以視情況忽略它;若出現 Error 則一定要修正;當所有的檢查都出現 OK (或含有 Warning ,但不影響)時,表示 package 皆符合規範。筆者曾經因為例子所耗費的時間過長而被退件修正。基於 CRAN 的規範相當多,在此無法一一列舉,請各位閱讀並同意 CRAN Repository Policy

01-1.開始 → 搜尋程式及檔案 → 鍵入 cmd → 點選 cmd.exe 進入出現的視窗。

01-2.鍵入 cd c:\new :將工作目錄移至 c:\new\ 下
01-3.鍵入 Rcmd check new_package 後,便開始一連串的檢查程序。

# ==================================================

02.製作 .tar.gz 檔案。
由於官方網站基於安全考量,不接受二進位(binary)編碼,所以必須將 package 包成 .tar.gz 檔案。

02-1.在 cmd 視窗下,鍵入 R CMD build New_package :製作 New_package_1.0.tar.gz 檔案。


# ==================================================

03.將 .tar.gz 檔案上傳至 R CRAN 。
進入 R CRAN 的伺服器(FTP)後,可以看到許多人上傳的套件。在每個檔案的尾巴通常可以看到三種狀態,分別是: .save, .pending or .noemail 。 .save 應該是表示套件測試沒有問題,可以發佈; .pending 應該是表示對此套件仍有疑問,需進一步釐清後,才可發佈; .noemail 表示尚未收到開發者的來信。基本上,管理群的回覆速度都很快,小編有幾次信件往來的經驗,間隔都在數分鐘內,真是熱心來著。

03-1.開啟檔案總管,並將連結: ftp://CRAN.R-project.org/incoming 貼在網址列上。

03-2.將 New_package_1.0.tar.gz 複製上傳到 R CRAN 的 /incoming 目錄下。

# ==================================================

04.寫信給管理者
在信件主題欄位:「'CRAN submission PACKAGE VERSION'」, PACKAGE 是你的套件名稱、 VERSION 是你的套件版本,並在內容簡單說明一下你上傳的套件名稱與套件功能,且不要在信中附加你的 R package ,接著等待佳音即可。若有任何對 R package 的問題,請先盡量在網路上找資源解決,盡可能減少管理群的負擔,畢竟管理群都是自願服務來著。

04-1.信件標題攔:
「'CRAN submission New_package 1.0'」
04-2.管理者信箱: CRAN@R-project.org

恭禧你在 R CRAN 擁有第一個套件!!!