点赞

技术分享 | 如何批量下载R包

发布时间: 04月23日

22
30475

在一个新服务器上重新安装一堆R包,估计是最让人头疼的事情之一了,本篇文章介绍如何使用一些R语句批量安装R包。


1.webp


如果你在两个服务器中安装的R的版本相同,那么最简单的方式就是从旧服务器中R的目录中找到 library 文件夹(比如我的在 */miniConda/miniconda3/lib/R/library ),然后黏贴到新服务器的相同目录下(记得备份一下新服务器的library文件夹 )。

但是我旧的R版本是3.6 ,新的R版本是4.0 ,复制黏贴过去运行R直接报错,这条路就不通了。


2.webp


查找所有需要安装的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层

微信截图_20230907091655.png

图文来源:北京康普森农业科技有限公司

展开
收起