总结一下目前学习的,基于Rstudio的创建R包流程。
Part1:创建R包基本流程
step1:建立开发环境
- 目的是创建一个文件夹,用于储存编写R包的各种文档;在创建之前想 好R包的名字,以及文件夹的路径。
- 这里示例R包名为
newPackage
。 - 进入Rstudio界面,依次点击
File → New project → New Directory → R package
,会出现如下界面,填写好R包名字,选择好开发包的工作目录(其它暂时都不用考虑);最后点击Creat Project
即可。
- 如上操作后,会进入新的工作环境,即R包开发环境;同时已经创建好R包开发所需的所必须的模板文档。主要包括4个部分:
(1)R 文件夹:用于存放R函数脚本的文件夹;里面有一个示例文件hello.R (2)man 文件夹:用于存放对应上述R函数的说明文档Rd文件的文件夹;里面有一个示例文件hello.Rd。 (3)DESCRIPTION:关于R包的说明文档。 (4)NAMESPACE:声明R包导出以供外部使用的函数以及R包从其他包导入的外部函数。
其中只有R函数脚本与DESCRIPTION需要我们细心准备外,其它可通过一些办法自动写入、更新。
step2:编写函数
-
首先先删除R文件夹里的示例文件、整个man文件夹、NAMESPACE文件;
-
2.2 然后在R文件夹内创建后缀名为
.R
的函数脚本,编写自定义的函数;
(1)如下在新创建的add.R
脚本中,编写一个简单的加法函数。
(2) 然后鼠标放置在函数上(如上图),按Ctrl+Alt+Shift+R
组合快捷键为函数添加说明文档模板(Insert Roxygen Skeleton)(下左);根据自己函数的功能完成注释(下右)
(3)测试编写的函数,有没有问题
|
|
重复上述1~3步骤,不断添加新的函数。可以是一个函数对应一个脚本,也可以将同一类的函数都放置在一个脚本内。 (4)为所有函数在man文件夹(如果没有,会创建)下逐一自动建立Rd文档,以及更新
NAMESPCAE
文档
|
|
step3:编写DESCRIPTION文件
函数写好了之后,就需要对这个包的总体功能等信息进行描述与说明,这些信息主要包含在
DESCRIPTION
文件中
- 首先如下图所示,修改其中的四点说明:
Title
包的名字,Authors@R
、Maintainer
作者以及维护者信息、Description
包的简要描述
- 然后使用下述函数,自动编写License部分
|
|
此外,如果版本有更新,可手动修改 Version部分
-
之后再补充依赖包的信息。分为两类:
Imports、Suggests、Depends
。三者的区别还没完全清楚,暂时觉得还是第一个常用。-
可使用函数
usethis::use_package(package, type = "Imports", min_version = NULL)
; -
假设其中的一个自定义的函数必须要用到dplyr包的
filter()
函数(因为实际中并未没有使用,之后会删去)
-
|
|
- 最后再check一下上述的所有文件,包括函数脚本,看看有没有问题
在R包不断完善的过程中,可以随时check
一下,保证之前的修改没有什么问题
|
|
step4:收尾工作–安装包
- (1)将包安装到本地的电脑
点击
Build → Install and restart
,可将进行安装R,重启R,加载该包三个步骤。 - (2)将包制成压缩包(*.tar.gz),方便传输或者分享
点击
Build → Build Source Package
|
|
Part2:R包进阶操作
上面介绍了编写R包的最简单的流程,还有很多进阶知识点值得学习。下面总结其中三个方面的整理。
2.1 示例数据集
- (1)存储为rdata格式并使其对用户可用
使用usethis::use_data()
函数,将数据对象(字符串、表格)储存到data文件夹里的rdata文件。
|
|
根据提示,需要在R文件夹下,创建内容框架如下的data.R
说明文件。
|
|
- (2)储存为原始文件的形式(例如.csv,.xlsx等)
创建inst/extdata
文件夹,用于储存这些文件即可
|
|
- (3)调用这些数据
先document()
、check()
一下;重新安装,加载
|
|
点击Build → Install and restart
调用示例数据
|
|
2.2 代码整理
- (1)代码美化
|
|
- (2)代码规范性检查
|
|
2.3 上传github
在我理解,将个人创建的R包上传到github中,可以高效的实现版本的控制、备份以及与他人共享,自己的使用等
- (1)上传至github
已经基本完成了R包的成形工作(Part1),或者刚建立好R包开发环境也可以。
下载安装 Github Desktop,并登陆自己的个人账户。
如下图,将R包开发环境目录关联到respository仓库内。
点击之后,一般会提示关联的R包开发环境目录不在Git的仓库列表中,点击creat a repository
即可
最后再点击Publish respository
,并设置是否code private即可成功上传到github。
- (2)commit → push
之后对包的文档进行修改、更新等操作时,都可以通过Github Desktop进行方便的提交
如下,对包添加了一个函数:在Github Desktop左下角填写更改的描述、点击Commit to main,再push到github上。之后在github主页看到的就是更新后的版本。
- (3)创建README文件
|
|
参考教程: 1、为新手准备的现代化 R 包开发流程 https://cosx.org/2021/02/writing-r-packages-a-modern-workflow-for-beginners/ 2、R包的开发 https://zhuanlan.zhihu.com/p/336425664 3、https://r-packages-zh-cn.readthedocs.io/zh_CN/latest/index.html
补充
- (1) 在代码脚本中引入管道符
%>%
|
|
-
(2) 本地安装R包方式
1 2 3 4 5 6 7
## 情况1 install.packages("RJSONIO_0.2-3.tar.gz", repos = NULL, type="source") ## 情况2 list.files("BayesPrism-main/BayesPrism/") # [1] "DESCRIPTION" "inst" "man" "NAMESPACE" "R" devtools::install_local("BayesPrism-main/BayesPrism/")