The Devtools Way: devtools+RStudio快速R程序包开发

本文记录我的首个R程序包MCMI的开发过程。

参考资料

  1. 两本Hadley Wickham写的书:Advanced RR Packages
  2. Coursera上的课程Mastering Software Development in R Specialization和配套教材Mastering Software Development in R

感谢开源社区,以上的资料都可以免费获取得到(Coursera课程可以申请补助)。

Preparation

开发R包还需要系统中存在编译工具,编译文档需要LaTeX支持。

  • Linux用户:sudo apt-get install r-base-dev texlive-full
  • Windows用户:1.RTools;2.MikTeX

另外,请确保以下两个包已安装于系统中:devtoolsroxygen2。推荐使用RStudio。

Get Started

在RStudio中新建项目,选择R程序包类型即可。建议同时建立Git路径以监控开发流程。

在编写代码之前,先要修改DESCRIPTION文件,要注意的几个地方:

  1. Package的命名要容易记忆和查询
  2. Depends指你所用开发环境的R版本
  3. 慎重选择License
  4. Imports指你所要调用的其他包,但在代码中,也要明确指出函数所处的包,如ggplot2::qplot()

Git Workflow

建议在GitHub上为本机申请SSH密钥,并在RStudo->Tools->Global Options->Git/SVN配置好路径,这样在执行git push时不用再次输入凭据。下面是有关Git的工作流:

  1. 修改代码/文档
  2. 编译,测试
  3. git commit
  4. git push
  5. 重复以上循环

RStudio对Git的集成很好,以上三四步操作均可在Git的操作面板里完成。

Code Workflow

  1. 修改代码
  2. Build&Reload
  3. 用命令行测试功能
  4. 重复以上循环

上述第二步可以在命令行中devtools::load_all()完成,也可以使用快捷键”Ctrl + Shift + L”,也可以在RStudio的开发面板中执行”Build&Reload”命令。之后,便可在命令行中调用编写好的函数,验证其功能。

Documentation Workflow

  1. 在.R文件中添加roxygen注释
  2. Document
  3. 使用help面板或?命令预览文档
  4. 重复以上循环

同样地,第二步有三种实现方式:1.devtools::document();2.”Ctrl + Shift + D”;3. RStudio开发面板中的”Document”命令。

Test Workflow

测试方面,除了上述Coding Workflow中提到的在命令行中调用函数进行测试之外,还可以利用testthat包来使测试自动化。

首先要安装testthat包,再使用devtools::ust_testthat()命令建立testthat路径。

下面是自动化测试的工作流:

  1. 修改代码
  2. testthat路径下编写相应的测试语句
  3. Build&Reload
  4. Test
  5. 排除Bug,重复上述过程

以上流程第四步同样有三种实现方式:1.devtools::test();2.”Ctrl + Shift + T”;3.RStudio中开发面板的“Test”命令。

Release

按照上述过程开发的R程序包,每一次git push事实上都是一次发布。使用devtools::install_github("git_repo_goest_here")命令,可以很方便地安装R程序包。

Next Step

使用devtools配合RStudio和Git,开发R包的过程已经非常亲民和流水线化。但要开发高质量的R包,需要对R的数据结构和S3等对象系统有更深的理解,而Advanced R则是你通往这一方向的最好伴侣。

网站迁移小记:腾讯云+Debian+Vestacp Python与SQL Server的交互:pyODBC, pymssql, SQLAlchemy
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×