分享

R语言 | R包安装大法

 kesongs 2018-10-12

如果你还没有完美的配置好R语言,请参考:

软件安装 | CentOS下安装配置Java

软件安装 | CentOS下安装配置Texlive2018

软件安装 | CentOS下安装配置R

正文开始:

install.packages


R包安装首先应该知道的方式,这种包主要来自于CRAN库,例如xlsx包,google搜索可见:

这种包就可以直接使用install.packages('packageName')进行安装,安装的时候会弹出选择镜像,我一般喜欢用兰州大学的镜像,或者可以直接在函数中写明,如下:

install.packages('xlsx', repos = 'https://mirror./CRAN/')install.packages('xlsx', repos = 'http://cran.us.')  # 或者换个镜像

试开URL’https://mirror./CRAN/bin/macosx/el-capitan/contrib/3.4/xlsx_0.6.1.tgz‘

Content type ‘application/octet-stream’ length 403830 bytes (394 KB)

downloaded 394 KB

下载的二进制程序包在

/var/folders/hy/37lqwmm102q4phtx4jsjjv5c0000gn/T//Rtmp0PngqO/downloaded_packages里

>

不报错即表示安装完成!可是,这个xlsx是R中最难安装的包之一,因为它依赖于rJava包,这个rJava就牵扯到Java的配置,所以如果出现如下报错:

报错1:

错误: package or namespace load failed for ‘xlsx’:

loadNamespace()里算’rJava’时.onLoad失败了,详细内容:

 调用: dyn.load(file, DLLpath = DLLpath, …)

 错误: 无法载入共享目标对象‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so’::

 dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so, 6): Library not loaded: @rpath/libjvm.dylib

 Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so

 Reason: image not found

报错2:

configure: error: Java Development Kit (JDK) is missing or not registered in R

Make sure R is configured with full Java support (including JDK). Run

R CMD javareconf

as root to add Java support to R.

If you don’t have root privileges, run

R CMD javareconf -e

to set all Java-related variables and then install rJava.

报错3:

conftest.c:1:17::致命错误 **jni.h:没有那个文件或目录

include

编译中断。

make: * [conftest.o] 错误 1

Unable to compile a JNI program

locate jni.h    # 查看jni.h的位置

但其实是有jni.h文件的:

/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64/include/jni.h

遇到这种情况,之前我会花很长时间去想办法解决这个报错点,但是现在我建议直接从正规途径下载并安装新版oracle-jdk即可!

参考:CentOS下安装配置Java

biocLite


生物信息分析必备的安装方式,这种包主要来自于大名鼎鼎的Bioconductor,其中收录了大量的生物学相关统计分析包,以DESeq2为例:

点击进去即可见到包的安装方法:

## try http:// if https:// URLs are not supported
source('https:///biocLite.R')

第一步要source (如果source函数里用https不行就改成http再试一试!),如果报错则参考 mac下安装配置R.md

biocLite('DESeq2')

‘stringdist’, ‘stringi’, ‘subplex’, ‘survival’, ‘sysfonts’, ‘testit’,

‘testthat’, ‘TH.data’, ‘trimcluster’, ‘TSP’, ‘utf8’, ‘vcd’, ‘vegan’,

‘VennDiagram’, ‘VGAM’, ‘viridis’, ‘XML’, ‘yaml’, ‘zoo’

Update all/some/none? [a/s/n]: n

>

问是否要更新全部/部分R包,还是都不需要更新,我一般不更新输入n回车即可完成,除非遇到不更新不能用的情况…

当然,除了这两种最常用的方式以外,也可以先把包下载到本地再进行安装,但是不在迫不得已的情况下不建议大家这么做,因为包的安装还涉及到众多依赖包的安装,这个是下载后本地安装无法解决的!

如何一次安装多个包


我们在配置新装的R语言或者突然需要用到很多新的R包的时候,可能需要一下安装很多包,这个时候应该怎么办?

不管有没有安装过全部重装吗?

还是,识别未装的包,并仅对其进行安装呢?

#### 安装未安装的包
need.packs = c('survival', 'pROC', 'xlsx')  # 想要安装的R包has = need.packs %in% rownames(installed.packages())  # 判断是否已经安装过了if(any(!has)) install.packages(need.packs[!has], repos = 'https://mirror./CRAN/')

看起来这样就可以解决问题了,但是…

哪些包是需要install.packages安装?哪些需要biocLite安装?

小编以前是靠经验,基本上能知道一些熟悉的R包是来源于CRAN还是Bioconductor,剩下的就检索一下,分开进行上面的安装步骤!

不过,后来小编觉得这样也太不智能了,一定有方法可以再优化一下代码,寻找一个可以判断R包来源的函数/包(主要是懒得搜索…),万万没想到…找到了一个可以自行 判断是否已安装安装还未安装的包 的包:

p_load


https://cran./web/packages/pacman/vignettes/Introduction_to_pacman.html

p_load是pacman包中的一个函数,所以首先进行安装pacman包:

if (!require('pacman')) install.packages('pacman', repos = 'https://mirror./CRAN/')

在执行完成后会显示如下:

Warning message:

In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :

 不存在叫‘pacman’这个名字的程辑包

注意,这是一个警告,是在安装之前判断了不存在这个包,所以不代表未安装成功 (可以关闭警告) !

为了测试pacman,先把之前已经安装好的xlsx(来源于CRAN)和DESeq2(来源于Bioconductor)给删除掉:

remove.packages(c('xlsx', 'DESeq2'))

从‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library’中删除程序包**

(因为没有指定‘lib’)

library(pacman) options(warn = -1)    # 这里关闭警告
p_load(xlsx, DESeq2, circlize, ComplexHeatmap, ggplot2)  # 主函数p_load,一次安装多个包

不知道你有没有发现,这个p_load很符合我们日常(不编程)的使用习惯,不用c()表示向量,也不用给包名加双引号!就可以运行了:

试开URL’http://cran./bin/macosx/el-capitan/contrib/3.4/xlsx_0.6.1.tgz‘

Content type ‘application/x-gzip’ length 403830 bytes (394 KB)

==================================================

downloaded 394 KB

The downloaded binary packages are in

/var/folders/hy/37lqwmm102q4phtx4jsjjv5c0000gn/T//RtmpW01cor/downloaded_packages

xlsx installed

Bioconductor version 3.5 (BiocInstaller 1.26.1), ?biocLite for help

A newer version of Bioconductor is available for this version of R,

?BiocUpgrade for help

试开URL’http:///packages/3.5/bioc/bin/macosx/el-capitan/contrib/3.4/DESeq2_1.16.1.tgz‘

Content type ‘application/x-gzip’ length 3580154 bytes (3.4 MB)

==================================================

downloaded 3.4 MB

The downloaded binary packages are in

/var/folders/hy/37lqwmm102q4phtx4jsjjv5c0000gn/T//RtmpW01cor/downloaded_packages

DESeq2 installed

可见,一个p_load函数就可以胜任(判断出xlsx和DESeq2没装,就直接安装,而其他已经存在的包就不会再重复安装),不报错即表示缺少的包安装成!

既然安装完了,就可以library加载一下,然后使用啦!

但是尝试过一次性library很多包的小伙伴可能知道,library并不支持向量形式的多个包一起加载,例如:

> need.packs = c(“survival”, “pROC”, “xlsx”)  

> library(need.packs)

Error in library(need.packs) : 不存在叫‘need.packs’这个名字的程辑包

所以小编之前常用lapply来实现:

lapply(need.packs, library, character.only = TRUE)

不过,这句微微有些别扭的命令…现在也不需要了,因为p_load函数也一并做了,也就是说:

  • 对于已经安装的包,就相当于library

  • 对于未安装的包,就相当于先安装然后又library了!


文化人总结一下:

pacman包的p_load函数,嗯,不错!


当然除了常规的CRAN和Bioconductor,你可能也经常会看到,有些R包是放在Github(人们常说的同性交友网站🤔🤔)上的,包括很多R包的作者会把及时更新的包发布在Github上,所以想要使用这些包,就要通过 install_github进行安装

install_github

以TCGAbiolinks为例,虽然在Bioconductor上也有,但是随着GDC的更新完善,TCGAbiolinks也在随之更新,所以安装最新版的TCGAbiolinks极为关键:

点击进去即可见到包的安装方法:

p_load(devtools) # 你需要先有个devtools
install_github(repo = 'BioinformaticsFMRP/TCGAbiolinks')

其实,pacman包中也有从GitHub上安装R包的函数p_load_gh,不过也是基于install_github去写的:

p_load_gh('BioinformaticsFMRP/TCGAbiolinks')

不过,不管使用哪种方式,在安装GitHub上的R包时你会发现,一定要告诉函数这个包属于哪个仓库,例如 “BioinformaticsFMRP/TCGAbiolinks” 的 “BioinformaticsFMRP”,否则就无法安装。这样的话,即便我记住了这个包的名称,每次要安装,也还是要去google一下这个包的库,或者翻看自己的脚本记录,然后复制粘贴到函数里,不是很麻烦吗?

所以,有没有一个包可以直接通过包名就能从Github上安装相应的R包呢?

githubinstall


https://github.com/hoxo-m/githubinstall

p_load(githubinstall)githubinstall('TCGAbiolinks')

当然,毕竟是Github,如果网络环境不好的话,很可能会报错:

Error in curl::curl_download(input, tmpFile, mode = “wb”, quiet = !showProgress) :

Timeout was reached: Connection timed out after 10001 milliseconds

如果提示如下,则表示找到了BioinformaticsFMRP下的TCGAbiolinks包

Suggestion:

BioinformaticsFMRP/TCGAbiolinks  TCGAbiolinks

Do you want to install the package (Y/n)?  

输入Y确认安装即可(同时会安装各种依赖包):

Downloading GitHub repo BioinformaticsFMRP/TCGAbiolinks@master

from URL https://api.github.com/repos/BioinformaticsFMRP/TCGAbiolinks/zipball/master

Installing TCGAbiolinks

更炫酷的功能

1、模糊匹配。例如,你不记得包名哪些字母要大小写:

githubinstall('tcgabiolinks')

Suggestion:

BioinformaticsFMRP/TCGAbiolinks  TCGAbiolinks

Do you want to install the package (Y/n)?  

2、全局搜索。例如有很多叫cats的包:

githubinstall('cats')

Select one repository or, hit 0 to cancel.

1: amurali2/cats      cats
2: danielwilhelm/cats No description or website provided.
3: hilaryparker/cats  An R package for cat-related functions #rcatladies
4: lolibear/cats      No description or website provided.
5: rafalszota/cats    No description or website provided.
6: tahir275/cats      ff

Selection:

3、列举R包。例如hadley开发了哪些包,或者作者是不是叫hadly?

gh_suggest_username('hadly')

[1] “hadley”     # 应该是hadley

hadleyverse = gh_list_packages(username = 'hadley')[1:3,]  # 列举hadley开发的包

username package_name                                             title

1   hadley RcppDateTime                                                  

2   hadley           S3 Helpers for Programming with the S3 Object System

3   hadley   assertthat                    User friendly assertions for R

repos <- with(hadleyverse,="" paste(username,="" package_name,="" sep="">'/'))  # 一次安装hadley所有的包githubinstall(repos)

例如,有哪些lasso算法相关的R包:

gh_search_packages('lasso')

4、查看Github上函数的源代码:

gh_show_source('gh_search_packages', repo = 'githubinstall')

githubinstall的更多功能大家可以参考官方文档,接下来,让我们再详细叙事下镜像的事情...

默认的镜像是什么?


install.packages() 的时候需要你选择镜像,当然你可以在脚本中直接设置 repos 参数:

install.packages('xlsx', repos = 'https://mirror./CRAN/')

但是在安装依赖包的时候,包的默认下载的路径则是https://cran.,如下:

试开URL’https://cran./src/contrib/bit_1.1-14.tar.gz‘

Content type ‘application/x-gzip’ length 54779 bytes (53 KB)

而安装Bioconductor包的时候,不会有弹框让你选择镜像,此时默认的镜像就是:

http:///packages

Installing package(s) ‘limma’

试开URL’https:///packages/3.7/bioc/src/contrib/limma_3.36.2.tar.gz‘

为什么要设置镜像?


很显然,本来默认的镜像都是美帝那一套,有时候不太符合我们中国的国情,所以…不稳定或者墙很难爬的时候就需要换成一个国内的镜像,用起来会比较安逸!

有哪些可用镜像?


官方给出的CRAN和Bioconductor镜像源可以分别进到网页里查看:

CRAN:

https://cran./mirrors.html

Bioconductor:

https://www./about/mirrors/

其中,Bioconductor在国内可用镜像目前只有两个:

中科大:

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

清华:

https://mirrors.tuna./bioconductor

如何设置镜像?


  • 第一种,设置安装包的下载镜像源,可以在安装包之前执行如下命令:

# 设置CRAN镜像(可以换成任意其他可用镜像)
options(CRAN='https://mirrors.tuna./CRAN')# 设置bioconductor镜像options(BioC_mirror='https://mirrors.tuna./bioconductor')
biocLite('limma')    # 测试一下

BioC_mirror: https://mirrors.tuna./bioconductor
Using Bioconductor 3.7 (BiocInstaller 1.30.0), R 3.5.1 (2018-07-02).
Installing package(s) ‘limma’
试开URL’https://mirrors.tuna./bioconductor/packages/3.7/bioc/src/contrib/limma_3.36.2.tar.gz‘

Content type ‘application/octet-stream’ length 1465903 bytes (1.4 MB)

downloaded 1.4 MB

可见,这个包是从刚设置的清华源上下载的(速度确实快到飞起…)。按理说这种临时设置的方式足够用了,但是有两个问题:

  1. 这种设置方式是一次性的,即当你重新打开了一个R窗口,需要再次运行options才能使用该镜像!

  2. 安装依赖包时,仍然会用R默认的镜像去下载!


  • 第二种,直接修改默认镜像。需要找到 R的安装路径 下的 etc目录下的 Rprofile.site 文件并做一些配置,对于这个文件的实际路径,可以在R中执行如下命令查看:

file.path(R.home(), 'etc', 'Rprofile.site')

如果不存在这个文件,就要在上示命令返回的路径下新建这个Rprofile.site文件,并在文件中粘贴如下内容:

## local creates a new, empty environment## This avoids polluting the global environment with## the object rlocal({  r = getOption('repos')  r['CRAN'] = 'https://mirrors.tuna./CRAN'    # 更换成清华源  options(repos = r)})options(BioC_mirror='https://mirrors.tuna./bioconductor')

此处注意,BioC_mirror 一定要在末尾处添加,如果是直接添加在local内部,运行:

install.packages('xlsx')

会报如下错误:

Warning: 无法在貯藏處https://mirrors.tuna./bioconductor/src/contrib中读写索引:

 无法打开URL’https://mirrors.tuna./bioconductor/src/contrib/PACKAGES‘

镜像源测试


重新打开R,安装TCGAbiolinks:

library(githubinstall)githubinstall('TCGAbiolinks')

我们截取其中两个依赖包的安装:

试开URL’https://mirrors.tuna./bioconductor/packages/3.7/bioc/src/contrib/AnnotationDbi_1.42.1.tar.gz‘

Content type ‘application/octet-stream’ length 4337155 bytes (4.1 MB)

==================================================

downloaded 4.1 MB

Installing AnnotationDbi

试开URL’https://mirrors.tuna./CRAN/src/contrib/RSQLite_2.1.1.tar.gz‘

Content type ‘application/octet-stream’ length 2192835 bytes (2.1 MB)

==================================================

downloaded 2.1 MB

Installing RSQLite

可见,不管是CRAN还是Bioconductor的包,全部是来自清华源,安装的是又快又好,因为TCGAbiolinks需要大量的依赖包,所以在新机器上基本上很难一次安装成功,而国内源就可以极大的克服这个问题!

** installing vignettes

** testing if installed package can be loaded

* DONE (TCGAbiolinks)

> library(TCGAbiolinks)

>

哈哈,果然厉害!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多