R包终极解决方案
写在前面:
在如何通过Google来使用ggplot2可视化这篇文章中,我们曾经介绍过R语言在生物信息学中的重要性。
这篇文章也激发了很多小伙伴学习的热情。学习R语言必然会安装各种各样的包,很多人在这一步就遇到了困难,
刚开始学习R语言的时候我们经常会遇到各种包安装错误,比如 package 'airway’ is not available(for R version 3.1.0)
等等,
这篇文章我们就来系统性地整理一些新手可能遇到的问题以及解决方案。
当然,你不一定现在就会遇到,但是如果你遇到了,请记住,可以在这里得到答案!
文章目录如下:
查看已经安装了和可以安装哪些R包
如何安装旧版本的包
如何切换镜像以及为什么要切换
4种常见的R包安装方式
说明:
该文首发于我的个人博客以及生信技能树论坛,请点击文末的阅读原文前往查看详细资料。
总体思路
R语言里面的包其实是很简单的,因为它自带了一个安装函数 install.packages()
基本上可以解决大部分问题。
但是如果出问题你需要从如下角度进行分析思考:
你的R语言安装在什么机器什么?(linux(ubuntu?centos?),window,mac)
你的R是什么版本:(3.1 ? 3.2 ? http://www.bio-info-trainee.com/1307.html )
你的安装器是什么版本?(主要针对于bioconductor包的安装)
你的联网方式是什么?https ?http ?
你选择的R包镜像是什么?
R包安在哪里,可以安装哪些R包
首先在R里面输入 .libPaths()
即可查看当前的R把包安装到了机器的哪个地方,这样可以直接进入目录去查看有哪些包,每个包都会有一个文件夹。
其次你可以用 installed.packages()
查看你已经安装了哪些包。
最后你可以用 available.packages()
可以查看自己的机器可以安装哪些包!
>.libPaths()
[1] "C:/Users/jmzeng/Documents/R/win-library/3.1"
[2] "C:/Program Files/R/R-3.1.0/library"
colnames(installed.packages())
[1] "Package" "LibPath" "Version"
[4] "Priority" "Depends" "Imports"
[7] "LinkingTo" "Suggests" "Enhances"
[10] "License" "License_is_FOSS" "License_restricts_use"
[13] "OS_type" "MD5sum" "NeedsCompilation"
[16] "Built"
ap <- available.packages()
> dim(ap)
打开ap变量可以看出,我们想安装的 airway 包根本不在,当然,这肯定是不存在的。 因为 airway 是bioconductor的包,并非R默认。
需要调整 contriburl
参数,如下:
> dim(available.packages(contriburl = "https://cran.rstudio.com/bin/windows/contrib/3.2/"))
[1] 8110 17
> dim(ap)
[1] 8155 17
> dim(available.packages(contriburl = "http://bioconductor.org/packages/3.1/bioc/bin/windows/contrib/3.2/"))
[1] 1000 17
> dim(available.packages(contriburl = "http://mirrors.ustc.edu.cn/bioc//packages/3.1/bioc/bin/windows/contrib/3.2/"))
[1] 1000 17
用这个参数,可以看不同仓库,甚至不同版本的R包共有哪些资源!
如何安装旧版本的包
既然你点进来看,肯定是有需求。 一般来说,R语言自带的
install.packages
函数来安装一个包时,都是默认安装最新版的。 但是有些R包的开发者他会引用其它的一些R包,但是它用的是旧版本的功能,自己来不及更新或者疏忽了。 而我们又不得不用他的包,这时候就不得不卸载最新版包,转而安装旧版本包。
首先你要用 remove.packages
这个命令把现在的包卸载掉!
然后去包的官网上面找到它的旧版本的下载链接:
我这里拿ggplot2举例:
http://cran.r-project.org/src/contrib/Archive/ggplot2/
#packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_1.0.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
#我这里安装它的1.0.1版本,而不是最新版!
#还有很多其它方法,我就不一一举例了,这个是我认为最方便,最直观的!
# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)
# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))
很明显,我是在StackOverflow*上面搜索得到的解决方案,O(∩_∩)O哈哈~ 你可以参考:http://stackoverflow.com/questions/17082341/installing-older-version-of-r-package
广而告之:
这里强力推荐我和公众号另一位编辑:思考问题的熊 两人共同完成的如何使用google系列文章,值得大家学习应用。
如何切换镜像
这个技巧很重要,一般来说,R语言自带的 install.packages
函数来安装一个包时,都是用的默认的镜像!
如果你是用的Rstudio这个IDE,默认镜像就是:https://cran.rstudio.com/
如果你直接用的R语言,那么就是:http://cran.us.r-project.org
但是一般你安装的时候会提醒你选择,而我们需要更改成自己最方便的
install.packages(pkgs, lib, repos = getOption("repos"),
contriburl = contrib.url(repos, type),
method, available = NULL, destdir = NULL,
dependencies = NA, type = getOption("pkgType"),
configure.args = getOption("configure.args"),
configure.vars = getOption("configure.vars"),
clean = FALSE, Ncpus = getOption("Ncpus", 1L),
verbose = getOption("verbose"),
libs_only = FALSE, INSTALL_opts, quiet = FALSE,
keep_outputs = FALSE, ...)
如果是在国内, install.packages ("ABC",repos="http://mirror.bjtu.edu.cn/ ")
, 换成北大的镜像你会体验飞一般的感觉!
如果想永久设置,就用options修改即可。
如果你是Rstudio的IDE,只需要鼠标点击直接进入全局设置,一劳永逸的选择好镜像!
你可以check一下每个镜像的包是不是一致的:
dim(available.packages(contriburl = "http://cran.rstudio.com/bin/windows/contrib/3.2/"))
更改镜像主页及包的版本即可查看所有镜像各提供哪些包!
当然,我们的bioconductor其实也是有镜像的,只是大部分人都不知道,也不会去用而已!
source("http://bioconductor.org/biocLite.R")
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/")
biocLite("RGalaxy")
##这样就用中科大的镜像来下载包啦
##bioconductor还有很多其它镜像:https://www.bioconductor.org/about/mirrors/
##https://stat.ethz.ch/R-manual/R-devel/library/utils/html/chooseBioCmirror.html
4种常见的R包安装方式
R自带函数直接安装
这个是最简单的,而且不需要考虑各种包之间的依赖关系。
对普通的R包,直接 install.packages()
即可,一般下载不了都是包的名字打错了,或者是R的版本不够。如果下载了安装不了,一般是依赖包没弄好,或者你的电脑缺少一些库文件,如果实在是找不到或者下载慢,一般就用 repos=
来切换一些镜像。
> install.packages("ape") ## 直接输入包名字即可
Installing package into 'C:/Users/jmzeng/Documents/R/win-library/3.1’
(as 'lib’ is unspecified) ##一般不指定lib,除非你明确知道你的lib是在哪里
trying URL 'http://mirror.bjtu.edu.cn/cran/bin/windows/contrib/3.1/ape_3.4.zip'
Content type 'application/zip' length 1418322 bytes (1.4 Mb)
opened URL ##根据你选择的镜像,程序会自动拼接好下载链接url
downloaded 1.4 Mb
package 'ape’ successfully unpacked and MD5 sums checked
##表明你已经安装好包啦
The downloaded binary packages are in
##程序自动下载的原始文件一般放在临时目录,会自动删除
C:\Users\jmzeng\AppData\Local\Temp\Rtmpy0OivY\downloaded_packages
对于bioconductor的包,我们一般是
source("http://bioconductor.org/biocLite.R") ##安装BiocInstaller
#options(BioC_mirror=”http://mirrors.ustc.edu.cn/bioc/“) 如果需要切换镜像
biocLite("ggbio")
#或者直接
BiocInstaller::biocLite('ggbio')
## 前提是你已经安装好了BiocInstaller
#某些时候你还需要卸载
remove.packages("BiocInstaller")
#然后安装新的
进入主页找到包下载地址
可以选择用R自带的下载器来下载,也可以把下面的url拷贝到浏览器用浏览器来下载
packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
packageurl <- "http://cran.r-project.org/src/contrib/Archive/gridExtra/gridExtra_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
#packageurl <- "http://www.bioconductor.org/packages/2.11/bioc/src/contrib/ggbio_1.6.6.tar.gz"
#packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_1.0.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")
这样安装的就不需要选择镜像了,也跨越了安装器的版本!
下载到本地后再安装
download.file("http://bioconductor.org/packages/release/bioc/src/contrib/BiocInstaller_1.20.1.tar.gz","BiocInstaller_1.20.1.tar.gz")
##也可以选择用浏览器下载这个包
install.packages("BiocInstaller_1.20.1.tar.gz", repos = NULL)
如果你用的RStudio这样的IDE,那么直接用鼠标就可以操作了。或者用 choose.files()
来手动选择把下载的源码 BiocInstaller_1.20.1.tar.gz
放到哪里。但这种形式大部分安装都无法成功,因为R包之间的依赖性很强!
命令行版本安装
如果是linux版本,命令行从网上自动下载包如下:
sudo su - -c \
"R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""
如果是linux,命令行安装本地包,在shell的终端
sudo R CMD INSTALL package.tar.gz
window或者mac平台一般不推荐命令行格式,可视化那么舒心,何必自讨苦吃呢?
文:Jimmy
校对编辑:思考问题的熊