乐于分享
好东西不私藏

R语言新一代包管理工具pak

R语言新一代包管理工具pak

随着R语言的发展,现在包的安装也越来越难了,之前R包都部署在CRAN上,现在又有Bioconductor项目,还有越来越多的包直接将代码安装在github上。在安装R包的时候,需要选择不同的函数,非常麻烦,给新手带来了很多困难。现在我们仅需要使用pak包,就可以很好的管理各个平台的R包。

R包不可用?

当你尝试使用install.packages()函数来安装DESeq2包的时候,确提示这个包不可用,检查包的名字没有问题,函数也没有拼写错误,版本也是最新的,为什么确无法安装呢?
原因在于DESeq2这个包来自于Bioconductor平台,需要使用BiocManager来管理。那么如何区分哪些包来自哪个平台呢?没法区分,比如Seurat包可以用来分析单细胞数据,感觉应该划分为Bioconductor平台,但实际上使用install.packages()函数来安装。
还有一种情况,当需要将机器中全部R包重新迁移,到新机器上重新安装时,这个时候就非常难了,因为完全无法区分使用install.packages()函数还是BiocManager,还有很多R包,只能使用devtools包来安装。

pak包

Pak 是一个现代化的 R 包管理器,提供快速、可靠和安全的包安装和管理功能。pak可以从 CRAN、Bioconductor、GitHub、URL、git 存储库、本地文件和目录安装R 包。它是 install.packages() and devtools::install_github()的替代项。PAK 快速、安全、方便。

官网:https://github.com/r-lib/pak?tab=readme-ov-file

1. 快速包安装并行下载
利用并发连接实现更快的包检索智能缓存
实施智能缓存机制以避免重复下载二进制包支持
在可用时利用预编译的二进制文件
2. 依赖解析精确依赖求解
高效处理复杂的依赖关系图冲突检测
在流程早期识别并报告包冲突版本约束支持
正确管理特定版本的依赖关系
3. 仓库管理多仓库支持
适用于各种 CRAN 镜像和自定义仓库仓库优先级系统
允许对仓库偏好进行精细控制本地仓库缓存
通过智能缓存减少网络使用
4. 安全功能包验证
通过校验和验证包完整性安全下载
实施安全下载协议签名验证
在可用时支持包签名验证
5. 开发工具包开发支持
为包作者提供工具测试集成
与 R 测试框架无缝集成CI/CD 支持
与持续集成管道良好配合
安装pak
# 从 CRAN 安装 pakinstall.packages("pak")# 或安装开发版本pak::pak("r-lib/pak")

使用pak来安装R包,这个时候无需区分R包来自于CRAN还是Bioconductor。

使用说明:https://pak.r-lib.org/reference/get-started.html

1、直接安装包

# 安装单个包pak::pkg_install("dplyr")# 安装多个包pak::pkg_install(c("dplyr""ggplot2""tidyr"))# 安装特定版本pak::pkg_install("ggplot2@4.0.0")# 从github安装pak::pkg_install("tidyverse/tibble")
2、包管理
# 检查包状态pak::pkg_status("dplyr")# 重新安装pak::pkg_install("tibble?reinstall")# 移除包pak::pkg_remove("dplyr")# 为可重现环境创建锁定文件pak::lockfile_create()

3、查看包依赖关系

# CRAN / Bioconductor 包的依赖树pak::pkg_deps_tree("tibble")# GitHub 上包的依赖树pak::pkg_deps_tree("tidyverse/tibble")# 当前目录中包的依赖树pak::local_deps_tree("tibble")# 解释递归依赖关系pak::pkg_deps_explain("tibble""rlang")

4、仓库管理

# 列出当前存储库pak::repo_get()#添加自定义存储库pak::repo_add(rhub = 'https://r-hub.r-universe.dev')pak::repo_get()#删除自定义存储库options(repos = getOption("repos")["CRAN"])pak::repo_get()#设置指定日期的 CRAN 存储库pak::repo_add(CRAN = "RSPM@2022-06-30")pak::repo_get()pak::repo_add(CRAN = "RSPM@2022-06-30")pak::repo_get()

5、 缓存管理

# 检查元数据缓存pak::meta_list()# 更新元数据缓存pak::meta_update()# 清理元数据缓存pak::meta_clean(force = TRUE)pak::meta_summary()# 检查包缓存pak::cache_list()

学AI+生物信息,选择基因学苑

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » R语言新一代包管理工具pak

猜你喜欢

  • 暂无文章