10分钟建构自己的R包,让你的R技能又更进一步
专题介绍:R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来。得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器的R Studio(用户的界面体验更好)。也正是由于全世界越来越多的数据科学社区和用户对R包的慷慨贡献,让R语言在全球范围内越来越流行。其中一些R包,例如MASS,SparkR, ggplot2,使数据操作,可视化和计算功能越来越强大。R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX、Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R的学术性开发比较早,适合生物学和医学等学术学科的科研人员使用。
【R语言】开通了R语言群,大家相互学习和交流,请扫描下方二维码,备注:姓名-R群,我会邀请你入群,一起进步和成长。
伙伴们,R包是什么?大家都会很亲切。一来,R语言的强大,得益于各种有用的R包;二来,R包,把针对某一主题或者任务的函数集、数据集聚合在一块,方便更多地人使用。
我们如何创建R包?本文说的10分钟建构自己的R包,是在你对R包需要做什么以及相应的函数集知道怎么设计和实现的前提下,我们采用一些构建R包的工具,就可以快速做整合,从而建构属于你自己的R包。
一、准备工作
我们需要用到usethis和devtools包。这些包都是R的额外包,我们需要事先安装它。
代码片段
install.packages('usethis')
install.packages('devtools')
二、建构自己的R包
第一步:创建R包项目
想好R包放置的路径和R包的名字,例如:命名CorPack,放在D:My_RPackages下。
使用下面代码,快速创建R包项目
usethis::create_package('D:/My_RPackages/CorPack')
语句执行成功后,会自动生成一个最基本的R包框架,包括:
-
生成一个CorPack包项目
-
为这个R包生成最基本的文件和结构
第二步:检查R包
当我们有了R包,对它进行检查(check)。使用devtools::check()的目的就是更新包文件,编译包以及提交元数据、结构、R代码、文档等检查。
执行语句
devtools::check()
检查成功后,提示有1处警告。
要解决这个问题,添加选择许可就可以。一个标准的建议是MIT许可,这个许可范围非常广。
执行下面语句即可。
usethis::use_mit_license("Luqing Wang")
打开和编辑DESCRIPTION,填写个人相关信息。
第二次做检查
执行语句
devtools::check()
第三步:添加函数
R包用于做相关性计算,添加相关性计算代码。
使用如下代码,创建一个compute_corr.R脚本文件,会放在R文件夹下。
usethis::use_r("compute_corr")
在脚本里,添加如下代码
compute_corr <- function(data, var1, var2){
# compute correlation ----
cor.test(
x = data %>% dplyr::pull({{var1}}),
y = data %>% dplyr::pull({{var2}})
) %>%
# tidy up results ----
broom::tidy() %>%
# retain and rename relevant bits ----
dplyr::select(
correlation = estimate,
pval = p.value
)
}
对脚本添加注释说明,具体操作如下:
-
把光标放到函数的大括号里面
-
按快捷键Cntrl + Alt + Shift + R
结果如下图。
然后按着这个框架,对添加的文本信息根据函数集的具体作用进行描述。
最终结果如下图。
执行下面语句
devtools::document()
它用于保存和提交文档信息。
语句成功执行后,自动生成函数的Rd文件,放在man文件夹下,如下图:
执行下面语句,查看函数的帮助文档,如下图:
我们继续做检查。检查的作用是什么,请伙伴们回顾下?
devtools::check()
结果如下:
结果信息告诉我们
computer_corr需要依赖其他包里面的一些函数,因此我们需要把依赖信息导入进来。
第四步:导入依赖
执行如下语句
usethis::use_package("broom")
usethis::use_package("dplyr")
usethis::use_pipe(
运行结果,如下图:
执行如下语句
devtools::document() # 把管道符号添加到NAMESPACE
结果如下图:
继续做检查。
devtools::check()
每次做了更新操作后,都需要做个Check。
第五步:安装R包
执行如下语句,安装R包。
devtools::install("D:/My_RPackages/CorPack")
第六步:使用R包
测试CorPack包
library(CorPack)
compute_corr(data = faithful, var1 = eruptions, var2 = waiting)
运行结果:
三、总结
伙伴们,现在就可以动手架构自己的R包了,你只需要按着本文的步骤,根据自己的实际问题,创建属于自己的R包,提升自己R语言技能。前面所描述的需要自己编写的内容,就是需要你自己根据实际情况做定制的操作了。
关于建构R包,有什么问题,请留言。
如何说出一口流利的英语?请看视频。
参考资料:
1https://www.pipinghotdata.com/posts/2020-10-25-your-first-r-package-in-1-hour/
好书推荐
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!