R语言包管理

背景

R 语言的一大优势就是有各种各样的扩展包,所谓 R 扩展包,就是将数据处理的算法通过 R函数来实现,再加上测试数据,说明文档整合在一起,就是 R 的扩展包。在使用 R 的过程中,肯定需要使用到 R 的包,因此,需要掌握 R 包的管理,包括包的查找,安装,加载,升级,取消加载,删除,查看帮助文档等等操作。

一、如何选择合适的 R 包

1.1通过 R TaskView 查找需要的软件包,根据大类查找。

网址:https://cran.rstudio.com/web/views/

1.2阅读文献,参考里面使用的 R 包。

1.3bioconductor 项目

Bioconductor 是建立在 R 语言环境上的,用于生物信息数据的注释、处理、分析及可视化工具包的总集,由一系列 R 扩展包组成。很多生物数据都是使用 bioconductor 包来分析的。

Bioconductor 官网:http://www.bioconductor.org/

二、R 包的管理

由于部分 R 包之间存在相互依赖的关系,因此,强烈推荐采用在线安装的方式,这样软件可以自动解决依赖关系问题,节约大量时间。R 默认的服务器在国外,为了加快下载速度,需要将 R 镜像站点修改为国内镜像站点。

2.1 R 包默认安装到以下目录

R 包的默认安装路径与登录账号是否为管理员有关,如果登录的为管理员账号,则默认安装到 R 安装目录下。如果登录的为普通账户,则在每个账号下的我的文档中。

代码语言:javascript
复制
#windows 系统:
C:\Program Files\R\R-4.0.3\library
C:\Users\xxxx\Documents\R\win-library\4.0
#macos 系统:
/Library/Frameworks/R.framework/Versions/4.0/Resources/library
#Linux 系统:
/usr/local/lib64/R/library/
~/R/x86_64-pc-linux-gnu-library/4.0/
#查看 R 包安装目录
.libPaths()
.Library
.Library.site

2.2 设置镜像

通过网络安装 R 包,网络速度影响比较大,因此要选择合适的镜像,一般选择距离较近的镜像。

代码语言:javascript
复制
chooseCRANmirror()
chooseBioCmirror()
setRepositories()

常用 R 镜像站点

CRAN 站点:

https://mirrors.tuna.tsinghua.edu.cn/CRAN/

https://mirrors.ustc.edu.cn/CRAN/

Bioconductor 镜像:

https://mirrors.ustc.edu.cn/bioc/

https://mirrors.tuna.tsinghua.edu.cn/bioconductor/

github:

https://github.com/

2.3 R 包管理

可以将每个 R 包看成一个手机 App,R 包的管理类似于手机应用的管理,包括搜索,下载,安装,打开,卸载等操作。

代码语言:javascript
复制
#安装 vcd 包
install.packages("vcd")
#一次安装多个包
install.packages(c("ggplot2","pheatmap"))
#查看已安装的包
installed.packages()
#加载 R 包
library(vcd)
require(vcd)
#升级软件包
update.packages()
#删除扩展包,从磁盘中移除
remove.packages("vcd")
#取消加载,从内存中移除
detach("package:vcd")
#其余函数
#列出 R 包中的函数
ls(package:base)
#加载包中的数据集
data(package="vcd")
#查看当前环境哪些包加载
find.package()
path.package()
#查看当前环境哪些包加载
find.package()
path.package()
search()
#列出当前包
(.packages())
#列出有效包
(.packages(all.available=TRUE))
path.package() #列出加载包的路径

2.4 安装 github 网站的 R 包

代码语言:javascript
复制
# 安装 devtools
install.packages("devtools")
library(devtools)
#github 在线安装
install_github("github_user_name/package_name")
#下载到本地安装
devtools::install_local("path_to_package_file.zip")

三、利用 bioconda 管理 R

bioconda 中包含了大量 R 包,可以通过 bioconda 管理 R 包。相比于 R 内置的函数,bioconda提供了更加方便的环境管理,安装R包更加方便。如果使用bioconda版本的R,使用bioconda安装 R 包更加方便。

在使用 bioconda 管理 R 包之前,首先需要知道 R 包在 bioconda 中名字为名字为 r-base,一些 Bioconductor 包的名字为 bioconductor-前缀。这样就可以使用 conda 命令安装和管理R 包了。bioconda 安装的 R 包,安装路径在下面目录下。

代码语言:javascript
复制
miniconda3/lib/R/library

conda 几乎可以安装大量的 R 包,这里推荐使用 bioconda 管理 R 包。

代码语言:javascript
复制
#搜索 deseq2 包
$ conda search deseq2
Loading channels: done
No match found for: deseq2. Search: *deseq2*
# Name Version Build Channel
bioconductor-deseq2 1.8.2 r3.2.2_0 bioconda
bioconductor-deseq2 1.10.0 r3.2.2_0 bioconda
bioconductor-deseq2 1.10.0 r3.2.2_1 bioconda
bioconductor-deseq2 1.10.1 r3.2.2_0 bioconda
#安装 deseq2 包
$ conda install -y bioconductor-deseq2

四、查看帮助文档

学习 R 语言需要经常查看帮助文档,包括 R 包的帮助文档,查看帮助文档可以快速了解一些函数的用法。不过由于开发者不同,因此帮助文档的水平也参差不齐。查看帮助文档,可以使用 help()函数,一般的 R 函数都会自带案例代码,可以直接使用 example()函数运行这些代码。此外,一些 R 包还提供一种 vignette 格式的文档。

代码语言:javascript
复制
#打开帮助页
help()
#查看函数帮助
?ggplot2
#查看扩展包里函数
??heatmap
#查看包帮助文档
help(package="ggplot2" )
#运行函数案例代码
example("heatmap")
#查看 vignettes 格式文档
browseVignettes()
#R 网站搜索
RSiteSearch("heatmap")

五、安装常用 R 包

代码语言:javascript
复制
install.packages("vcd")
install.packages("plotrix")
install.packages("vioplot")
install.packages("venn")
install.packages("RColorBrewer")
install.packages("ggplot2")
install.packages("ggExtra")
install.packages("gcookbook")
install.packages(c("carData","gridExtra"))
install.packages("ggsci")
install.packages("ggpubr")
install.packages("ggthemes")
install.packages(c("Rwordseg","wordcloud2"))
install.packages("pheatmap")
install.packages("qqman")
install.packages("maps")
install.packages("factoextra")
install.packages("circlize")
install.packages(c("FactoMineR", "ggfortify"))

六、R 包迁移

6.1 直接拷贝 R 包

R 包一般都是一个完整文件,只需要将 R 包整个文件夹迁移走,一般就可以运行。对 R 包进行迁移时,尽量保证 R 版本一致。直接将整个 R 包目录拷贝到新的目录下即可。首先找到 R包的安装目录,然后将整个目录打包,拷贝到另外一个目录解压缩。

代码语言:javascript
复制
.libPaths()
# [1] "/share/Software/miniconda3/envs/r4-base/lib/R/library"
# [2] "/home/xhs/R/x86_64-conda-linux-gnu-library/4.1" 

该方法只是一种方案,绝大部分包是可以的。但是注意不能将 windows 系统安装的迁移到Linux 下。该方法也不是万无一失,比如 R 包需要系统一些配置,缺少了还是无法运行。

6.2 获取名字重新安装

获取要迁移的 R 包名字列表,在一台设备上使用循环逐个安装。但是该方法无法处理Bioconductor 或者 github 上安装的包。

代码语言:javascript
复制
#保存 A 设备上的 R 包名字列表;
oldip <- installed.packages()[,1]
save(oldip,file = "installedPacckages.Rdata")
#在 B 设备上进行安装;
load("installedPacckages.Rdata")
newip <- installed.packages()[,1]
for (i in setdiff(oldip,newip)) {
 install.packages(i)
}

6.3 通过 libPaths()函数

代码语言:javascript
复制
(base) xiehs 10:24:06 ~
#使用自己安装的 R
$ /ifs1/Software/biosoft/R-4.1.1/bin/R
#列出当前 R 包目录,有两个
> .libPaths()
[1] "/home/xiehs/R/x86_64-pc-linux-gnu-library/4.1"
[2] "/ifs1/Software/biosoft/R-4.1.1/library" 
#通过 new 选项增加新的目录 
> .libPaths(new="/ifs1/Software/miniconda3/lib/R/library")
#新的目录增加进来了,这样一下子就多了很多包可以使用
> .libPaths()
[1] "/ifs1/Software/miniconda3/lib/R/library"
[2] "/ifs1/Software/biosoft/R-4.1.1/library"

new 选项会去掉之前默认的,可以通过在函数中增加一个向量增加多个目录。

代码语言:javascript
复制
> .libPaths()
[1] "/home/xiehs/R/x86_64-pc-linux-gnu-library/4.1"
[2] "/ifs1/Software/biosoft/R-4.1.1/library" 
> .libPaths(c(.libPaths(),"/ifs1/Software/miniconda3/lib/R/library"))
> .libPaths()
[1] "/home/xiehs/R/x86_64-pc-linux-gnu-library/4.1"
[2] "/ifs1/Software/biosoft/R-4.1.1/library" 
[3] "/ifs1/Software/miniconda3/lib/R/library"

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。原地址暂未启用(bioinfoer.com)。

代码语言:javascript
复制
sx.voiceclouds.cn

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。