「r<-workshop」第六期:R 包开发
2020-06-27 本文已影响0人
王诗翔
这里汇总的信息和视频解读推荐每个想要进阶和学习 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 包、不断优化!
![](https://img.haomeiwen.com/i3884693/72be130db2957047.png)
![](https://img.haomeiwen.com/i3884693/964fabc2c1b17b23.jpg)