分享

R语言 | 可以愉快的更新最新版R了!

 kesongs 2018-10-12

其实不是特别喜欢更新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下的RRscript可执行文件就是链接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版本的时候巨慢…

  1. 其实更快的命令是:tools:::.BioC_version_associated_with_R_version()

  2. 每次安装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,终于有一点点排版了


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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多