开发一个R包
R最强大的莫过于统计分析和可视化,关键是完全的开源免费啊。有时候使用多了以后,会积累一些函数或者是数据库,而这些函数和数据库通常能够帮助到别人,这时候就可以把这些函数或者是数据库打包成R包,上传到CRAN、Bioconductor或者是GitHub,让 其他的使用者使用自己的包。
我开发的第一个包是riceidconverter,主要的用途是水稻的ID转换。整个包的开发断断续续经历了两个月,包括数据的爬取(Python脚本见GitHub)、整理、函数的构思,以及最艰难的调试。
主要流程
我的开发流程是软件安装、构思R包、准备数据、编写R包、调试代码、R包提交。下面就从这几方面一一道来我这个小白的经验。
软件安装
¶MikTex
MikTex主要是用于编译后面的pdf文档,如果包只是自己用,就不用安装这个软件。软件的下载地址是MikTex。安装的话一路默认就OK。
¶roxygen2
roxygen2是个R包,通过注释的方式,生成文档。直接install。package('roxygen2')即可。
¶devtools
这个包主要是用来build和checkR包的。直接install。package('devtools')即可。
构思R包
这个比较难说清楚,每个R包都有一定的功能的,构思的过程就是R包功能完善的过程。
准备数据
这个环节,也是很难说清除。如果数据要内嵌到R包,而且包里面的函数会用到数据,那表头名称和函数中的变量名称要保持一致。
编写R包
¶创建项目
直接用RStudio创建R Package即可:File→New Project→New Directory→R Package。需要注意的是选择的路径不可以有中文字符!会生成下面的文件:
比较重要的是man、R和DESCRIPTION这三个文件(夹)。其他的几个可以删除。
¶编写DESCRIPTION
这个文件是用来描述一些基本信息的,这些信息也是必填的一些信息。
下面这是我的包的一些描述:
需要注意的是在Title部分,大小写要求很严格。
另外需要注意的是在Description部分,每个缩写都需要有详细的解释,如果有链接,还需要将链接放在<>里面,而不是()。
¶编写函数
在R这个文件夹下面创建对应的.R文件。比如想实现的功能是t检验,那就创建一个t.test.R。打开以后还是有几行#'开头的描述,这些是必须的:
@name是指这个函数的名称,其他的就是和DESCRIPTION类似的;@param表示的是参数;@example表示的是函数使用的例子;@return表示的是返回的结果;接着下一行编写函数就行:
需要注意的是在R文件夹下面还应该创建一个和R包名称相同的.R文件。只需要填写这些东西就可以了:
¶调试代码
这个部分,就需要不断的调试,就是使用不同的数据去测试这个函数是否可靠。
¶添加数据
如果需要将数据内嵌在R包怎么办呢?一行代码搞定:use_data(test.data, internal = TRUE)。test.data就是先前准备好的数据,需要先加载到R环境中。会在R文件夹下生成一个sysdata.rda文件。
R包提交
在完成编写和调试后,就只剩下build、check和upload了。
先要生成注释文件:
1 | |
¶build
一行代码:
1 | |
会生成一个tar.gz文件。这个文件用于后面的提交。
¶check
一行代码:
1 | |
完后会生成一个riceidconverter.Rcheck文件夹,里面有各种报告。在RStudio输出界面没有ERROR、Warning还有NOTE,那就基本没问题了。
¶安装
先尝试一下能不能安装上:
1 | |
¶提交
这个就比较简单了,直接在https://cran.r-project.org/submit.html按照要求提交tar.gz文件就行。
最后,等着邮件吧。
💌lixiang117423@gmail.com
💌lixiang117423@foxmail.com