R极简教程-5:包

来源:互联网 发布:内存稳定性测试软件 编辑:程序博客网 时间:2024/06/05 15:16

R包介绍

包可谓是R语言发展至今最重要的因素。包其实就是一个一个的函数脚本,安装了一个包以后,你就可以使用这个包里数据或者函数。R语言写起来很快,所以很多科学家再研究出新算法新工具之后,都会第一时间发布一个R版本的工具。所以R语言再科学界的地位很高。

大部分R包的安装方法很简单,就是一行代码:

install.package("XXX")

就可以完成安装,对于一些复杂的生物学方面的包,需要再Bioconductor网站上寻找,然后用Bioconductor的命令去安装。

我写的ChAMP包,和即将发布的EpiCluster包都在Biocondcutor上。^_^

但是值得注意的是,再有些时候,R之间的以来关系很复杂,如果需要安装一些很大很复杂的R包,你需要安装一系列的依赖软件,才能确保你要安装的软件可以顺利运行。

另外,包的更新换代非常频繁,有时候你发现自己的包和别人的运行效果不一样,可能的原因是你们的版本不同。

此外,一些很特殊的包需要其他一些语言和工具的支持,比如RJava包需要Java支持,RPostgreSQL需要PostgreSQL数据库支持,RSpark需要Spark支持等等……面对那些问题,最好参看相关的文档,找到解决办法。不过,再大多数时候,install.packages()可以解决大部分问题

包的开发

如果你到一定水平,就可以开发自己的R包,就算你不到一定水平,也可以尝试修改别人的R包。比如说,有些包要求的R语言版本是3.4,但是你安装的是3.3,你就可以直接下载包的原始文件,修改一下它的版本号,然后直接安装使用。

这些深入细节的问题,你知道的越多,越有利于你平时的工作。R中的一些包确实不太稳定,因为不是所有科学家都是优秀的程序员。能够自己修改程序,可以让大部分工作都更便捷。

举例说明,pheatmap这个包,这是我很喜欢的一个R包,小巧实用,专门用来绘制热图(不是地图上红一块绿一块那种热力图啊!)。

首先上网站找到pheatmap包的页面:
这里写图片描述
其中,第一个红框是有关于这个包的说明文档,第二个是原始的安装包,其中包含的就是一些脚本和说明文件。

我们点击第二个红框,将其下载下来,解压进入:
这里写图片描述
这就是一个包的内部文件,R文件夹下,是每一个函数脚本(必须是函数)。man文件夹是针对每一个函数的说明文档。其余的是一些描述等等。你可以修改这个文件夹下的文件,来改变它们的功能。

我们用Rstudio打开DESCRIPTION,修改一下版本号:
这里写图片描述

然后用RStudio再R文件夹下新增一个R文件,仿写pheatmap就行了:
这里写图片描述
就四行代码:

myboxplot <- function(){  print("This is myboxplot function.")  boxplot(matrix(rnorm(1000,0,1),nrow=20))}

然后在man文件夹下新增一个Rd文件:
这里写图片描述
也没几行:

% Generated by roxygen2 (4.1.1): do not edit by hand% Please edit documentation in R/pheatmap.r\name{myboxplot}\alias{myboxplot}\title{a test function}\usage{myboxplot()}\examples{myboxplot()}\author{XXX}

最后修改一下NAMESPACE文件,再export中加入myboxplot这样就能再安装后使用:
这里写图片描述

这样,我们就已经再pheatmap包中增加了一个我们自己的函数myboxplot,然后我们u需要打包这个包:

再windows系统下打开cmd命令框(这里需要再之前的安装步骤中将R路径添加进入了环境变量),cd到包所在的目录下。

输入命令生成R包:

R CMD build pheatmap

然后可以看到这样的画面:
这里写图片描述
这意思就是,pheatmap_1.0.9.tar.gz包已经打包生成成功了。

然后我们可以安装这个包:点击RStudio上方的Tools按钮,选择这个tar.gz包,然后点击install就行了。
这里写图片描述

然后程序报错:

> install.packages("C:/Users/Yi/Desktop/pheatmap_1.0.8/pheatmap_1.0.9.tar.gz", repos = NULL, type = "source")Installing package into ‘C:/Users/Yi/Documents/R/win-library/3.4’(as ‘lib’ is unspecified)ERROR: dependencies 'RColorBrewer', 'scales', 'gtable' are not available for package 'pheatmap'* removing 'C:/Users/Yi/Documents/R/win-library/3.4/pheatmap'Warning in install.packages :  running command '"C:/PROGRA~1/R/R-34~1.0/bin/x64/R" CMD INSTALL -l "C:\Users\Yi\Documents\R\win-library\3.4" "C:/Users/Yi/Desktop/pheatmap_1.0.8/pheatmap_1.0.9.tar.gz"' had status 1Warning in install.packages :  installation of package ‘C:/Users/Yi/Desktop/pheatmap_1.0.8/pheatmap_1.0.9.tar.gz’ had non-zero exit status> 

错误提示,缺少依赖包(’RColorBrewer’, ‘scales’, ‘gtable’):这不是我们的程序写出了问题,而是以来出错的。

如果你使用install.package()直接从互联网下载安装,那么如果你想要安装的包缺乏一些以来软件,R会自动帮你下载那些依赖包进行安装。但是如果你直接通过tar.gz文件进行安装,就不会帮助你自动下载依赖。

没关系,我们自己安装一下这些R包:

install.packages('RColorBrewer')install.packages('scales')install.packages('gtable')

在安装一些较大的R包的时候,有时候即使使用互联网安装也会出现一些dependence缺失的情况,那种情况一般是因为多级引用,比如A引用了B,B引用了C,但是A没有引用C等等一连串的问题……但是一般来说,安装过程中报什么错,你就安装什么包,这样循环下去就行了。

安装好那些依赖包以后,再次尝试安装,就成功了:

> install.packages("C:/Users/Yi/Desktop/pheatmap_1.0.8/pheatmap_1.0.9.tar.gz", repos = NULL, type = "source")Installing package into ‘C:/Users/Yi/Documents/R/win-library/3.4’(as ‘lib’ is unspecified)* installing *source* package 'pheatmap' ...** R** preparing package for lazy loading** help*** installing help indices** building package indices** testing if installed package can be loaded*** arch - i386*** arch - x64* DONE (pheatmap)> 

然后,我们调用我们自己安装的这个包,试试我们写的函数能不能用?

library("pheatmap")myboxplot()

这里写图片描述

然后我们就可以看到,我们自己写的myboxplot()函数已经可以像其他函数一行调用安装了,你可以把这个R包传给其他朋友使用。但是,你没有权限去修改这个R包在网上的一行程序,因为毕竟它不是属于你的,只有R包的维护人有资格通过SVN去修改源代码。所以你写的R包只能自己使用或者传给别人安装。

总而言之,R包是很重要的一个部分,我们简单介绍了R包和其开发维护过程。

原创粉丝点击