其实不是特别喜欢更新R软件,基本上是在被迫更新的时候(比如,要用的R包要求高版本的R,当然也有极少数具有年代感的R包不支持高版本R软件…)才会去更新,我目前主要在用的版本还是R-3.4.1,本来近期刚想升级到R-3.4.3,但是刚好有个包要求R-3.5.0及以上版本,干脆就直接测试一下最新版R-3.5.1的安装和配置,出了点小问题,记录一下。本篇前半部分主要针对 mac 下的安装,后半部分则是针对R-3.5.1中bioconductor的配置问题!
下载
点击下载: https://mirrors.tuna./CRAN/bin/macosx/R-3.5.1.pkg 如果你的电脑上之前没装过R,则双击默认安装即可,像在windows下安装一样简单! 如果已经有了其他版本的R,建议先往下读! linux、windows下的安装看这里 R语言实战专题 | R语言安装
知识点
R包安装路径: /Library/Frameworks/R.framework/Versions/Current/Resources/library/ 不同版本的R包会放在不同的路径下: /Library/Frameworks/R.framework/Versions 如何切换不同的R版本
因为有时候我们需要不同版本的并存,所以需要可以很方便的切换: # 在终端将需要用的版本链接到Current目录ln -sfhv /Library/Frameworks/R.framework/Versions/x.y/Library/Frameworks/R.framework/Versions/Current # x.y替换成目标版本,如3.4
需要注意的是,版本只有小数点后1位,所以不存在小版本 (如3.4.1与3.4.2) 之间的转换!以前我的电脑上3.3和3.4是并存的,虽然后面3.3基本上就不用了,但是也是可以随时切换的!但是,当我装完R-3.5.0之后,再转到R-3.4.1,运行时报错: -bash: R: command not found
即找不到R的可执行文件,我想说有点神奇… 这是因为安装新版本后就会把之前版本的 /Library/Frameworks/R.framework/Versions/3.4/Resources/bin 目录删除! 而/usr/local/bin 下的R 和Rscript 可执行文件就是链接Resources/bin 目录下的: R@ -> /Library/Frameworks/R.framework/Resources/bin/R Rscript@ -> /Library/Frameworks/R.framework/Resources/bin/Rscript
删掉了当然找不到了… 那可以每次需要用哪个版本的时候就安装一下,最新安装的就会默认是当前要用的版本(稍微有些麻烦),不过在安装的时候还是能找到一些端倪的: 一个没注意看的提示:使用蓝色字体的脚本可以避免旧版本的R软件被覆盖! 在终端中运行,注意需要sudo权限,这个不用怕,只要是自己的电脑就有,输密码的时候就是自己装软件时用的密码: sudo pkgutil --forget org.r-project.R.el-capitan.fw.pkg # 需要sudo权限
Forgot package ‘org.r-project.R.el-capitan.fw.pkg’ on ‘/‘.
显示如上,就可以继续安装了,安装完成后可以发现,旧版的R文件没有被删除,所以就可以愉快的切换了! 蹩脚的Bioconductor
安装完之后,安装bioconductor包 (例如affy、DESeq…) 之前要执行如下命令: source('http:///biocLite.R') # install and load BiocInstaller package
发现报错: Error in file(filename, “r”, encoding = encoding) : cannot open the connection to ‘https:///biocLite.R‘ 此外: Warning message: In file(filename, “r”, encoding = encoding) : URL ‘https:///biocLite.R‘: status was ‘Couldn’t resolve host name’
当然,也可能是下面这种情况: Warning: unable to access index for repository https:///packages/3.7/bioc/src/contrib: 无法打开URL’https:///packages/3.7/bioc/src/contrib/PACKAGES‘
或者: Error in readRDS(dest) : 读取链结时发生了错误
该命令其实就是通过 http:/// 下的 biocLite.R 这个文件去安装BiocInstaller包,而接下来要用的 biocLite 就是其中的一个重要函数: biocLite installs or updates Bioconductor and CRAN packages in a Bioconductor release.
通过查看代码: https://www./biocLite.R 可以发现原因在于脚本里最终执行的安装BiocInstaller的命令是: # R-3.5.0及以上版本对应的bioconductor版本为3.7 install.packages('BiocInstaller', repos = 'https:///packages/3.7/bioc')
那,单独运行这个命令就能看到错误: Error in readRDS(dest) : 读取链结时发生了错误
我们把https换成http并运行: remove.packages('BiocInstaller') # 保险起见先卸载 install.packages('BiocInstaller', repos = 'http:///packages/3.7/bioc')
试开URL’http:///packages/3.7/bioc/bin/macosx/el-capitan/contrib/3.5/BiocInstaller_1.30.0.tgz‘ Content type ‘application/x-gzip’ length 84646 bytes (82 KB) downloaded 82 KB 下载的二进制程序包在 /var/folders/hy/37lqwmm102q4phtx4jsjjv5c0000gn/T//RtmpIanHHo/downloaded_packages里
此时我们再执行就正常了: source('http:///biocLite.R') # install and load BiocInstaller package
Bioconductor version 3.7 (BiocInstaller 1.30.0), ?biocLite for help
所以,现在使用biocLite 安装Bioconductor包前执行source 命令就可以啦! Bioconductor慢在哪里
虽然安装成成功了,不过也有个问题,就是每次新打开的R里执行source这一步都很慢,原因在于biocLite.R脚本中使用BiocInstaller::biocVersion() 函数返回当前bioc版本的时候巨慢… 其实更快的命令是:tools:::.BioC_version_associated_with_R_version() 每次安装Bioconductor包的时候都要先source ,而source 的目的是安装和加载BiocInstaller包,而BiocInstaller包其实第一次就已经安装好了,那为什么以后安装其他R包还要source ?
可以不用source ,但就是其中BiocInstaller包的加载很慢(这个是必须要用的,亲测加载了4分钟…),所以这不能怪source ! BiocInstaller
本身也是一个Bioconductor包,只不过可以用上面说的install.packages() 进行安装: This package is used to install and update Bioconductor, CRAN, and (some) github packages.
https:///packages/release/bioc/html/BiocInstaller.html 所以其实biocLite 也可以调用其他包中的函数安装CRAN和github上的R包! R包安装
# 安装一些基础包及TCGA数据分析包 if (!require('pacman')) install.packages('pacman', repos = 'https://mirror./CRAN/') library(pacman) p_load(bumphunter, minfi, RnBeads, sva, RPMM, pheatmap, RnBeads.hg19, GenomicRanges, rappdirs, magrittr, devtools, downloader, rvest, readr, ggthemes, selectr, XML, xml2, survminer, matlab, ComplexHeatmap, EDASeq, edgeR, TCGAutils)install_github('BioinformaticsFMRP/TCGAbiolinks')install_github('Bioconductor/GenomicDataCommons')
你是不是发现咱们生信控这次的文章 哪里不一样了? hah,终于有一点点排版了
|