R包開發過程記錄

2022-06-17 09:36:13 字數 3384 閱讀 7675

走一遍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...