在一个新服务器上重新安装一堆R包,估计是最让人头疼的事情之一了,本篇文章介绍如何使用一些R语句批量安装R包。
如果你在两个服务器中安装的R的版本相同,那么最简单的方式就是从旧服务器中R的目录中找到 library 文件夹(比如我的在 */miniConda/miniconda3/lib/R/library ),然后黏贴到新服务器的相同目录下(记得备份一下新服务器的library文件夹 )。
但是我旧的R版本是3.6 ,新的R版本是4.0 ,复制黏贴过去运行R直接报错,这条路就不通了。
查找所有需要安装的R包
我采用下面的命令行,在脚本文件夹中便利所有内容,找到所有加载R包的语句
cat * | grep "library(" | sort | uniq
找到一堆library(*)的语句后,我是直接复制到Excel里,用excel的智能填充提取R包名称(快捷键为ctrl+e), 然后用f9提取数组信息提取所有包名,简单处理后得到所有R包名称序列(写个脚本提取R包名称也可以),如下。
all_packages <- c("*","*")
简单区分R包来源并安装
我们通过available.packages()函数提取CRAN中所有可用的R包,如下:
ap <- available.packages() # cran中所有可用的包
我们先简单地将需要安装的R包分为两类,如果在ap中则视为CRAN中的R包,采用install.packages()来安装;如果不在ap中则视为Bioconductor中的R包,采用BiocManager::install()命令来安装。如下:
cran_packages <- all_packages[all_packages %in% rownames(ap)]
# length(cran_packages)
bio_packages <- all_packages[!(all_packages %in% rownames(ap))]
# length(bio_packages)
install.packages(cran_packages) # 一次性安装所有的cran包
if (!requireNamespace("BiocManager", quietly= TRUE))
install.packages("BiocManager")
BiocManager::install(bio_packages) # 一次性安装所有的bioconductor包
确定哪些R包没有安装成功
将所有需要安装的R包,与所有已经安装的R包进行配对,确定哪些R包没有安装成功,如下:
# 所有已经安装的R包
installed_packages = row.names(installed.packages())
# 查看哪些R包还没有安装
no_cran_packages=cran_packages[!(cran_packages %in% installed_packages)]
no_cran_packages # 2个 [1] "ggpubr" "car"
no_bio_packages= bio_packages[!(bio_packages %in% installed_packages)]
no_bio_packages# 0个
install.packages(no_cran_packages) # 对于没有安装上的R包再安装一次
BiocManager::install(no_bio_packages) # 对于没有安装上的R包再安装一次
需要特殊安装的R包
有些R包其实是从GitHub安装的,或者从别的地方安装,因此需要特殊安装一下。
如果你足够幸运的话,你到这一步应该就把所有的R包都安装好了,还有没装好的,估计就是遇到问题了。此时就没有固定的解决方法了,只有针对不同的安装问题“见招拆招”了。
天津:18710280840/022-24986099
北京:400 1869 509
邮箱:marketing@kangpusen.com
地址:北京市昌平区中关村生命科学园生命园路4号院4号楼7层
图文来源:北京康普森农业科技有限公司