如何安装旧版本的 R 包
由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接。
我们在安装 R 包的时候,经常会发现某个最新的包与当前 R 的版本不兼容。
> install.packages("effects")
Warning message:
package ‘effects’ is not available (for R version 3.4.3)

或者,如果我们要将应用程序部署到 shinyapps.io,Shiny Server 或 RStudio Connect 等,这些环境可能不允许我们运行最新版本的 R 包的位置时,我们需要使用旧版本的 R 包。
要知道目前 R 包的版本,可以使用命令 packageVersion("package name") 或者 sessionInfo()。注意,sessionInfo() 这个命令是当前状态 load 的 R 包显示其版本。
> packageVersion("ggplot2")
[1] ‘3.0.0’
在没有使用对应 R 包的状态下使用命令 sessionInfo(),不会显示该 R 包信息:
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-conda_cos6-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS/LAPACK: /usr/local/software/anaconda3/lib/R/lib/libRblas.so
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
loaded via a namespace (and not attached):
[1] compiler_3.4.3
>
在使用对应R包的状态下使用命令 sessionInfo(),会显示该 R 包及其关联 R 包的版本状态:
> library(ggplot2)
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-conda_cos6-linux-gnu (64-bit)
Running under: CentOS Linux 7 (Core)
Matrix products: default
BLAS/LAPACK: /usr/local/software/anaconda3/lib/R/lib/libRblas.so
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
other attached packages:
[1] ggplot2_3.0.0
loaded via a namespace (and not attached):
 [1] Rcpp_0.12.19     withr_2.1.2      crayon_1.3.4     dplyr_0.7.4
 [5] assertthat_0.2.0 grid_3.4.3       plyr_1.8.4       R6_2.3.0
 [9] gtable_0.2.0     magrittr_1.5     scales_1.0.0     pillar_1.3.0
[13] rlang_0.3.0      lazyeval_0.2.1   bindrcpp_0.2     glue_1.3.0
[17] munsell_0.5.0    compiler_3.4.3   pkgconfig_2.0.1  colorspace_1.3-2
[21] bindr_0.1        tibble_1.4.2
>
现在,我们开始今天的重点,介绍一下安装旧版本 R 包的几种方法。
1
  使用 devtools 安装
最简单的方法就是使用 devtools 包提供的 install_version() 函数来安装所需的版本。
# 没有 devtools 的话,先要安装
> install.packages("devtools")
> require(devtools)
> install_version("effects", version = "4.0-0", repo="http://mirrors.tuna.tsinghua.edu.cn/CRAN/")
Downloading package from url: http://mirrors.tuna.tsinghua.edu.cn/CRAN//src/contrib/Archive/effects/effects_4.0-0.tar.gz
* installing *source* package ‘effects’ ...
** package ‘effects’ successfully unpacked and MD5 sums checked
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (effects)
详细的 CRAN repo 镜像列表参考:https://cran.r-project.org/。中国地区的镜像:

2
  从源码安装
如果我们知道需要安装的软件包版本的 URL,则可以通过 install.packages() 从指向该 URL 的源码进行安装。 如果您不知道 URL,可以在 CRAN Package Archive 中查找。
如果我们使用的是 Windows 或 OS X 并且正在寻找旧版 R(R 2.1 或更低版本)的软件包,则可以在 CRAN binary archive 中查找。
一旦我们获取到了 URL 后,就可以使用以下示例的命令安装:
> packageurl <- "https://cran.r-project.org/src/contrib/Archive/effects/effects_4.0-0.tar.gz"
> install.packages(packageurl, repos=NULL, type="source")
如果我们知道了 URL,也可以通过 R 之外的命令行从源码安装。例如:
$ wget https://cran.r-project.org/src/contrib/Archive/effects/effects_4.0-0.tar.gz
$ R CMD INSTALL effects_4.0-0.tar.gz
请注意,如果从源码安装,则需要确保拥有从源代码构建软件包所需的工具链。 在 Windows 上,这可能需要我们安装 Rtools。
3
  潜在的问题
安装旧版本的软件包时可能会出现一些潜在问题:
我们可能会丢失仅在较新版本的软件包中出现的功能或 bug 修复。
所需的旧软件包版本可能与我们安装的 R 版本仍然不兼容(有些历史版本的 R 包已经不再更新,这些包只适用于低版本的 R)。 在这种情况下,我们需要将 R 降级到兼容版本或更新 R 代码以使用其他的替代软件包。
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快的玩耍吧
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
如何安装旧版本的 R 包的更多相关文章
- 如何成功安装旧版本火狐,成功安装firebug和firepath插件
		
很久不用火狐了,为了练习selenium定位浏览器等操作,下载了火狐浏览器,新版火狐已经没有firebug和firepath等插件,无法使用,只有安装老版本的火狐:*****安装好之后立刻设置不让他自 ...
 - conda,pip 安装指定版本的指定包
		
1.conda 安装指定版本的指定包 cuda search tensorflow-gpu 有如下结果: 然后使用conda install package=version 就能安装指定版本的pack ...
 - 安装旧版本的Firefox
		
在Ubuntu上安装就版本的Firefox,此处以version 46为例子: 1.删除已存在的Firefox, On CentOS/RHEL # yum remove firefox On Ubun ...
 - Eclipse4.4安装旧版本插件报错 Failed to prepare partial IU
		
Failed to prepare partial IU: [R]com.googlecode.veloeclipse.ui 2.0.8. work around: go to Help -> ...
 - mac上虚拟机安装旧版本的macosx 10.8
		
前言 由于测试的需要,需要10.8的macosx,但又不想降级自己mac版本,所以还是装虚拟机,Parallels Desktop试验了安装不了osx,就换VMware Fusion,发现是可以的. ...
 - 如何成功安装旧版本火狐,成功安装firebug
		
1.下载一个老版本火狐浏览器: 历史版本下载 2.下载安装完成后,立即在火狐浏览器的选项设置里面把自动更新关闭 3.手动安装firebug:最后搜到可以下载成功的地址:http://www.onlin ...
 - pip 安装指定版本的python包
		
pip install -v package_name==2.3
 - 【转】如何成功安装旧版本火狐,成功安装firebug和firepath插件
		
原文地址:https://www.cnblogs.com/meimei00/p/10566793.html
 - DESeq2 install --- 如何安装R包("RcppArmadillo")?
		
安装R包("RcppArmadillo")失败,导致依赖该包的DESeq2 无法使用: 首先对gcc,g++升级至4.7, 但依然报错,还是安装不了RcppArmadillo: 报 ...
 - Linux环境下R和R包安装及其管理
		
前言 R对windows使用很友好,对Linux来说充满了敌意.小数据可以在windows下交互操作,效果很好很棒.可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux ...
 
随机推荐
- 还在stream中使用peek?不要被这些陷阱绊住了
			
目录 简介 peek的定义和基本使用 peek的流式处理 Stream的懒执行策略 peek为什么只被推荐在debug中使用 peek和map的区别 总结 简介 自从JDK中引入了stream之后,仿 ...
 - Condition 接口
			
系统性学习,移步IT-BLOG Java 对象拥有一组监视方法:wait().wait(long timeout).notify() 以及 notifyAll() 方法,这些方法与 synchroni ...
 - MySQL高性能索引策略和查询性能优化
			
前缀索引和索引选择性 有时候需要索引很长的字符,这会让索引变得大且慢.一个策略是模拟哈希索引. 通常可以索引开始的部分字符,这样可以大大解约索引空间,提高索引效率.但这样会降低索引的选择性. 索引的选 ...
 - Sokit(TCP/UDP调试工具)
			
下载:http://www.winwin7.com/soft/56522.html#xiazai Sokit中文版是一款免费开源的TCP / UDP 测试(调试)工具,它主要可以用于接收和发送TCP/ ...
 - 集合-LinkedHashMap 源码详细分析(JDK1.8)
			
1. 概述 LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题.除此之外,Linke ...
 - [人生感悟]做人、做事的"人生十悟"【转载】
			
做人.做事.做官,是不少人需要经常面对和正确把握的大问题,处理好了,则健康成长,反之则裹足不前,甚至掉入人生的一个个"陷阱",这其中有规律可循,总结"十悟"可思 ...
 - abc285G
			
ABC 285 G - Tatami Solution 网络流 网格图是一个天然二分图, 可以按 横纵坐标之和 的奇偶性将相邻两格分属于左部和右部. 记'?' 或 '2' 的格子为待匹配点, 记横纵坐 ...
 - 链式描述线性表(C++实现)
			
在链式描述中,线性表的元素在内存中的存储位置是随机的,每个元素都有一个明确的指针或链指向下一个元素的位置 chain类 在此使用单向链表实现了线性表,其中最后一个节点的指针域为NULL,即它用单向链接 ...
 - ARM Cortex-M4|非常好用的一种串口收发方式
			
在这里分享项目中我经常使用的一种串口收发方式:阻塞发送 + 接收中断 +空闲中断 + 环形队列 项目代码地址:www.baidu.com 一.简介 串口发送使用最简单的阻塞发送方式,一般来说都是接收的 ...
 - 单窗算法的地表温度反演:谷歌地球引擎GEE代码
			
本文介绍在GEE中基于Landsat遥感影像实现地表温度(LST)单窗算法反演的代码. 1 背景知识 基于遥感数据的地表温度(LST)反演目前得到了广泛的应用,尤其是面向大尺度.长时间范围的温 ...