R从3.5升级到3.6.3
这里介绍的就是R的一个包:installr。
installr {installr} R Documentation
Installing software from R
Description
Gives the user the option to download software from within R.
上面是installr的官方文档介绍。
接下来来讲所谓的一行代码更新R语言。
这里有两个注意点:
1.你的installr必须跟你的R版本对应,因为R语言默认安装的包都是适配最新的R语言版本。
2.使用installr更新R语言必须在管理员权限运行原生R里面,Rstudio里面无法进行(笔者没有尝试过其他R的IDE,有童鞋若有尝试也可以进行指正)。
#安装installr install.packages(installr) library(installr) updater()#就是这句。真得劲。一键更新
这个方法的好处在于,你可以不用重新安装你已经有的包。可以完整保留。
注意:安装时如果提问是否安装需要编译的源代码包, 最好选择否, 因为安装源代码包速度很慢还有可能失败。
安装完installr包后可以看到RGui中出现了installr选项
注意:在下载完R新版本后,跳出安装程序,这里安装目录应该和你旧版本的R在一个目录下
可以看到R console提示框中显示I am now copying 203 packages from 旧的版本到新版本
等一会儿后。。。。。。。
出现所有包复制到新位置,然后把包从旧版本中移除等动作。。。。
到R-3.5.2中看到所有包到移动到了新位置library中
备注:更详细操作请看北大R教程中http://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/intro.html,内容如下:
1.3 R扩展软件包的安装与管理
1.3.1 安装
R有一万多个扩展软件包,提供了各种各样的功能。 以安装sos包为例。sos包用来搜索某些函数的帮助文档。 在RStudio中用“Tools”菜单的“Install Packages”安装, 输入sos就可以安装该扩展包。
如果不用RStudio, 在R图形界面选菜单“程序包-安装程序包”, 在弹出的“CRAN mirror”选择窗口中选择一个中国的镜像如“China (Beijing 2)”, 然后在弹出的“Packages”选择窗口中选择要安装的扩展软件包名称, 即可完成下载和安装。
还可以用如下程序制定镜像网站(例子中是位于清华大学的镜像网站)并安装指定的扩展包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/"))
install.packages("sos")
还可以选择扩展包的安装路径, 如果权限允许, 可以选择安装在R软件的主目录内或者用户自己的私有目录位置。 由于用户的对子目录的读写权限问题, 有时不允许一般用户安装扩展包到R的主目录中。 用.libPaths()
查看允许的扩展包安装位置, 在install.packages()
中用lib=
指定安装位置:
print(.libPaths())
## [1] "D:/R/R-3.3.1/library"
install.packages("sos", lib=.libPaths()[1])
1.3.2 Github和BioConductor的扩展包
还有一些扩展包没有在CRAN系统提供, 而是放在了Github网站。 对于这样的包, 安装方法举例如下:
if(!require(devtools)) install.packages('devtools')
devtools::install_github("kjhealy/socviz")
其中kjhealy
是Github网站的某个作者的名称, socviz
是该作者名下的一个R扩展包。
还有一些包需要从Bioconductor网站安装。 示例如下:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install(c("Biostrings"))
1.3.3 更新扩展包
在RStudio中用“Tools–Check for Package Updates”菜单, 可以显示有新版本的扩展包, 并选择进行更新。
或者在命令行用如下命令更新本地安装的所有有新版本的CRAN扩展包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/"))
update.packages(checkBuilt=TRUE, ask=FALSE)
RStudio在运行时会载入某些包, 如rlang, 这使得RStudio无法更新这些包, 需要在R的命令行程序中更新。
1.3.4 迁移扩展包
在每一次R软件更新后, 需要重新安装原来的软件包, 这个过程很麻烦。 如果仅仅是小的版本更新, 比如从3.5.1变成3.5.2, 或者从3.4.2变成3.5.0, 可以在安装新版本后, 临时将新版本的library子目录更名为library0, 将老版本的library子目录剪切为新版本的library子目录, 然后将library0中所有内容复制并覆盖进入library子目录, 删除library0即可。 然后在基本R中(不要用RStudio)运行如下命令以更新有新版本的包:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/"))
update.packages(checkBuilt=TRUE, ask=FALSE)
如果版本改变比较大, 可以用如下方法批量地重新安装原有的软件包。 首先,在更新R软件前,在原来的R中运行:
packages <- .packages(TRUE)
dump("packages", file="packages-20180704.R") #将R包名称备份下来
这样可以获得要安装的软件包的列表。 在更新R软件后, 运行如下程序:
options(repos=c(CRAN="http://mirror.tuna.tsinghua.edu.cn/CRAN/"))
source("packages-20180704.R") #放在你的电脑文档目录下
install.packages(packages)
安装时如果提问是否安装需要编译的源代码包, 最好选择否, 因为安装源代码包速度很慢还有可能失败。
1.3.5 项目私有扩展包目录
在使用了R一段较长时间以后, 会安装了许多扩展包, 这些扩展包在某个时期是有用的, 但是一旦某个任务完成了就不再有用。 但是, 用户自己无法判断哪些包已经不需要。
R的renv扩展包支持每个项目保存私有的扩展包目录, 这样, 不同的项目使用不同的扩展包集合, 不至于引发版本冲突, 也不必总是为公用的R扩展包目录增加许多仅是短暂使用的扩展包。 那些不需要安装许多扩展包的项目仍可以不启用renv, 使用公用的R扩展包目录。
在生成新的RStudio项目时, 可以点击选中“Use renv with this project”复选框; 对已有的RStdio项目, 如果要启用renv, 可以选菜单“Tools – Project Options – Environment”, 选中“Use renv with this project”复选框。
启用了renv的项目, 在安装新的扩展包时, 将安装在项目目录中, 而不再修改R的公用的扩展包目录。 这也有助于将项目迁移到其它计算机上。