如果你还没有完美的配置好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 函数也一并做了,也就是说: 文化人总结一下: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
可见,这个包是从刚设置的清华源上下载的(速度确实快到飞起…)。按理说这种临时设置的方式足够用了,但是有两个问题: 这种设置方式是一次性的,即当你重新打开了一个R窗口,需要再次运行options 才能使用该镜像! 安装依赖包时,仍然会用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) >
哈哈,果然厉害!
|