最近经常出现一个错误,类似于package ‘airway’ is not available (for R version 3.1.0)
就是某些包在R的仓库里面找不到,这个错误非常普遍,stackoverflow上面非常详细的解答:
在阅读这个答案的时候,我发现了一个非常有用的函数!available.packages()可以查看自己的机器可以安装哪些包!
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包安装到了什么地方?
> .libPaths() [1] "C:/Users/jmzeng/Documents/R/win-library/3.1" [2] "C:/Program Files/R/R-3.1.0/library"
这样可以直接进入这些目录去看看有哪些包,每个包都会有一个文件夹!
其次你可以用installed.packages()查看你已经安装了哪些包
> 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" |
|
|
可以具体到你所安装的包的16个信息!!!
最后你可以用available.packages()可以查看自己的机器可以安装哪些包!
####
ap <- available.packages()
> dim(ap)[1] 7662 17可以得到你现在所要能够安装的包!! 得到的ap是一个矩阵[1] 7662 17 如下: 我们就很容易查看自己想安装的包是否存在于正在使用的R的仓库里面! > grep('A3',rownames(ap)) [1] 1 1685 2212 > grep('ABCp2',rownames(ap)) [1] 4 > grep('airway',rownames(ap)) integer(0) > 或者用"airway" %in% rownames(ap)可以看出,我们想安装的airway包根本不存在,当然,这肯定是不存在的。 因为airway是bioconductor的包,不是R的包!!
- > 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包共有哪些资源!!! See also Names of R's available packages, ?available.packages. Alternatively, the list of available packages can be seen in a browser for CRAN, CRAN (extras), Bioconductor, R-forge and RForge.