走一遍r包開發過程,並發布到github上使用。
1. 建立r包框架
建立完成後,在r包資料夾下有如下檔案(夾):
2. 自定義r包
上面是rstudio為開發者建立的乙個框架,接下來是對自己開發的r包進行編寫和註解。
①編寫功能函式
點選rstudio右下角files中的r目錄新建r函式(自帶了乙個hello.r)。要實現什麼樣的功能就編寫相應函式,函式功能的組織和構建也是開發者重要的技能之一。這裡作為示例,隨便寫了個畫餅圖的函式(因為現有畫餅圖的函式都不友好)。
my_pie
與一般的函式編寫不同的是,我們需要對這個函式編寫文件,這就是為什麼我們在用r包中函式時可用?
來檢視函式幫助。
編寫完成後。。。
第一步,給函式新增注釋,這裡是對函式整體進行roxygen注釋,方便文件生成,而非普通**注釋。游標放在函式名上,使用ctrl+shift+alt+r
快捷鍵即可生成乙個基本模板,我們根據需要進行相應修改即可。
#' using a dataframe specific column to plot a pie figure
#'#' @param data a dataframe or tibble
#' @param ncol specific column, factor
#'#' @return a figure as ggplot2 object
#' @export
#'#' @examples
#' my_pie(mtcars,ncol=2)
#' my_pie(diamonds,ncol=3)
#' my_pie(diamonds,ncol=3)+guides(fill="none")
#'my_pie
第二步,執行devtools::document()
,會在man資料夾下生成該函式的rd檔案:
如果修改了函式的注釋,需要重新執行第二步。
每個函式都是這樣新增注釋和文件,比如再新增乙個id轉換的函式:
②修改description
點選右下角files中的description對模組進行修改。
新增一些主要的資訊即可:
③安裝r包
rstudio ——> build
,可構建原始碼包或者二進位製包。
點選後會進行編譯以及更新文件。
使用?my_pie
等編寫的函式,已經可以檢視文件了,說明編譯成功,已經可以使用r包了。
3. 上傳github
如果只是自己使用,可以放在本地。本著r語言開源精神,要想分享給其他人使用,需要有地方託管。權威認可的地方如cran、bioconductor等,但如果專業度不夠高或者處於開發階段,還是託管在github上吧。
從本地倉庫上傳到github遠端倉庫,與一般**上傳無異。
首先,進入本地r包目錄。
git init
git add .
git commit -m 'my first r package'
然後,登入github新建repository
(建議用ssh位址,盡量不要用https位址)。
第三,本地倉庫關聯github,上傳**。
git remote add origin [email protected]:***/test.git
git pull origin master #先pull下
git push -u origin master
有個小插曲,我在pull的過程中,遇到了如下錯誤:
原因是ssh keys沒有設定或者過期了,ssh keys 可以在沒有密碼的情況下信任當前工作的計算機。解決辦法是生成並設定ssh keys。具體可參考這篇教程:解決github permission denied (publickey)問題。
上傳成功。
4. 安裝使用
devtools工具為我們提供了github的r包安裝方式:
devtools::install_github("**/my_rpackage/rmytools")
library(rmytools)
用內建資料集試下:
my_pie(mtcars,2)
my_pie(diamonds,ncol=3)
my_pie(diamonds,ncol=3)+guides(fill="none") #ggplot2物件,自由編輯
用r包來管理組織自己平時經常用的**是一種非常高效的方式,後續想新增任何功能或修改原有指令碼,只需git push,重新裝一下r包即可。是時候整理整理之前混亂的**了(俗稱屎山)。
ref:kai gu:如何快速寫乙個r包
如何上傳本地**到github
開發過程問題記錄
開發某個功能時候遇到一點小問題,記錄一下 上傳到git倉庫,被發現在開發 中寫了測試 原本自己想測試下功能是否正常,測試完忘記刪除了 前端的專案,有個index.js檔案不讓修改,不是不讓修改,為了大家統一。我修改了index.js檔案,然後上傳到倉庫了。修改了啟動埠,反向 埠,為了開發方便 只會影...
MUI開發過程問題記錄
1.金額校驗 校驗金額方法 function check obj 1 禁止錄入小數點後兩位以上 for i 0 i2.修改底部tab bar顏色 type text css mui bar tab mui tab item mui active style android端沒問題 解決辦法 1.vi...
Struts框架開發過程記錄
2.建立專案匯入jar包 3.簡單的登陸頁面login.jsp 4.只有乙個action,loginaction 5.寫struts.xml配置檔案,配置action 6.在web.xml中配置struts2 第乙個遇到的問題 發現伺服器啟動不了報錯 not defind strut default...