2014年8月28日 星期四

利用 R-Studio 建立 R Package (Build R Package by Using R-Studio)

先前的一篇文章:「如何製作一個專屬於自己的 R package」提及建立 R package 的流程與安裝軟體。但在流程中,所需安裝的軟體與變數的設定太過繁瑣,對一般的使用者來說,會操作的相當辛苦。所幸,在眾人的努力下,許多流程皆已利用程式設定好指令與參數。使用者再也不用一步步去做設定,只需將自己的函式功能撰寫好,剩下的就交給 R-Studio 就好!

環境說明:
處理器:Intel(R) Core(TM)2 Qual CPU Q9550 @ 2.83 GHz 2.83 GHz
記憶體:8.00 GB

作業系統:Windows 7; Service Pack 1; 64 位元
R 版本:3.1.0 (2014-04-10) for Windows; Spring Dance
Rtools 版本: Rtools 3.1 for Windows
R-Studio 版本:RStudio 0.98.1028 - Windows XP/Vista/7/8

01.開啟 R-Studio。

02.建立新專案:點選 File → New Project... 或者點選右上角的 Project 圖示 → New Project...

03.點選 New Directory

04.點選 R Package

05.輸入 package 名稱後,再點選 Create Project

06.你將看到 R-Studio 的右下區塊有產生出建立 R package 時,所需要的檔案。接著,在 R-Studio 中,進入 R 資料夾。

這些檔案將放在您預設的目錄中,且資料夾以套件名稱命名。

07.點擊 MyPackage.R 後,便可在左上區塊編輯你所需要的函式。

08.編輯好函式、DESCRIPTION、NAMESPACE及所有.Rd檔案後,點擊功能表列上的「Build」→「Build and Reload」

09.R-Studio 便會執行 Rcmd.exe 檔案,檢查你的 package 是否有錯誤。若執行都正常後,軟體會自動載入建置好的 package ,如此便可立即使用。

10.若想將 package 給別的使用者使用,便要建立 .zip 檔案。請點選「Build」→「Build Binary Package」,系統便會進行一連串的檢查程序。


若都沒有問題,便會將建構好的 .zip 檔案放置在預設的資料夾中。如此便可將此檔案傳遞給所需要的使用者使用。


11.若想上傳到 CRAN 上,則必須建立 .tar.gz 檔案。但由於上傳到 CRAN 上時, package 必須符合 R CRAN team 所制訂的規範(請參考 CRAN Repository Policy 或參考「R CRAN 的 Package 上傳規範」)。所以,在建立 .tar.gz 檔案前,必須先執行套件的檢查。請點選「Build」→「Check Package」

12.R 便會進行一連串的項目檢查,待檢查完畢並確認無任何警告(Warning)或錯誤(Error)訊息後,即檢查完成。

若在檢查的過程當中,發生 warnings 、 errors 或未知的訊息請參考「R Check Package 常見的 warnings 、 errors 及 未知的訊息」一文。(撰寫中…)

13.建立 tar.gz 檔案。點擊「Build」→「Build Source Package」

若都沒有問題,便會建立 .tar.gz 檔案。


其檔案放置在預設的資料夾中。


14.前往 R website 中的 web form 進行套件提交,提交流程請參考「R CRAN 的 Package 上傳流程」。在提交前,請確實閱讀 CRAN Repository Policy 或參考「R CRAN 的 Package 上傳規範」。


15.若您有任何想增加 Rcmd.exe 執行時的參數時,請點選「Build」→「Configure Build Tools...」

便可針對需要的項目進行更改。

如何,夠簡單吧!=D

如果您無法複製上述的任何步驟,或在過程當中出現錯誤,請讓我知道,方便我協助您,感謝!

All works were done in Ivan's Statistics Science Laboratory.

2 則留言:

  1. 張先生你好:
    我最近有再嘗試用Rstudio做package,但有遇到一些狀況,想問是否方便寄信討論?
    信箱:peter123wu0@gmail.com

    回覆刪除
    回覆
    1. 好的。已私訊回覆您。謝謝您的閱讀。

      刪除