這裏彙總的信息和視頻解讀推薦每個想要進階和學習 R 包開發的讀者看一看,是我兩年開發經驗的一個總結。R 包的開發目前是前所未有的簡單,但大部分 R 用戶不瞭解,無從下手,希望這篇文章可以爲大家減少一些攔路虎(下方有二維碼可以直達視頻)。
資料:
- 小抄
- 圖書:R 包開發 - http://r-pkgs.had.co.nz/
R 包開發最好和 Git(GitHub) 結合使用。
內容:
- 開發工具
- RStudio
- usethis (devtools may be helpful) - usethis 是目前的開發核心包,裏面有特別多的工具函數,自己開發時多看一看、試一試效果。
- 開發
- DESCRIPTION
- NAMESPACE
- R/
- inst/ - optional
- data/ -
usethis::use_data()/usethis::use_data_raw()
- man/
gitignore
.Rbuildignore
devtools::load_all()
devtools::check()
- 處理 undefined global variables
- 工具函數與非標準計算
usethis::use_pipe()
-
usethis::use_tidy_eval()
理解非標準計算閱讀 https://shixiangwang.github.io/home/cn/post/2019-07-08-dplyr-programming/ -
{{}}
使用方法見 https://shixiangwang.github.io/home/cn/post/2019-08-04-rlang-operator-curly-curly/
- 包文檔與測試
- roxygen2 - 使用 RMarkdown 語法
- testthat
- https://github.com/mikldk/roxytest
- 包使用說明/手冊/網站
usethis::use_gpl3_license()
-
usethis::use_readme_rmd()
/usethis::use_readme_md()
usethis::use_badge()
usethis::use_lifecycle()
- ...
- https://github.com/GuangchuangYu/badger
- https://github.com/GuangchuangYu/hexSticker
- NEWS -
usethis::use_news_md()
- CITATION -
usethis::use_citation()
- Vignette -
usethis::use_vignette()
- Pkgdown -
usethis::use_pkgdown()
andpkgdown::build_site()
- 自動集成
- GitHub action
- travis -
usethis::use_travis()
- appveyor -
usethis::use_appveyor()
- 代碼覆蓋度 -
usethis::use_coverage()
- 提交CRAN/Bioconductor
- 先測試好再提交
devtools::check()
-
rhub::check_for_cran()
這個包提供的測試功能比較豐富
devtools::submit_cran()
- Bioconductor沒提交過,官網有說明,照着做。
- 先測試好再提交
總結一下要點:
- 掌握 R 包結構
- 掌握 usethis 、devtools包
- 編寫簡約有效的函數代碼
- 處理好
devtools::check()
顯示的 NOTE/WARNING/ERROR - 逐步學習寫示例、測試、說明書甚至網站
- 實戰:提出想法、構建 R 包、不斷優化!