缓解新手 R Packages 安装焦虑

文章目录

    • 前言
      • [安装 pak](#安装 pak)
      • [安装、更新 CRAN 或 Bioconductor 的工具](#安装、更新 CRAN 或 Bioconductor 的工具)
        • Reinstall
        • [升级更新 R Rackages](#升级更新 R Rackages)
      • [从 GitHub 安装](#从 GitHub 安装)
      • [从 URL 安装](#从 URL 安装)
      • 安装本地工具及其依赖项
      • 查找、解释依赖
    • [pak 官方文档:](#pak 官方文档:)

前言

对于一个刚学习生信和使用R的同学来说,安装 R Packages 可能算是一个小困难,因为光看 Packages 的名字,无法区分其来源是 CRAN、Github、Bioconductor、git repositories 或者 URL 等

而不同来源的 R Packages,使用的命令又有所不同,比如从CRAN 上安装,使用install.packages("packageName")、安装Github上的Packages,可以使用 devtools::install_github("hadley/devtools"),详见从 Github 安装 R packages 不完全指南、而安装 Bioconductor 的工具又要使用 BiocManager::install(DESeq2)、等等...

大概19年的时候,有个大佬发布了一个工具:pak,整合了几种不同来源工具的下载安装方式,包括从 CRAN、Bioconductor、GitHub、URL、git 存储库、本地文件和目录安装R包。

这个工具几天前还在更新维护,这里简单介绍一下使用方式,希望可以一定程度上缓解安装 R Packages 的焦虑😐

安装 pak

工具作者发布在了CRAN上,所以直接可以:

r 复制代码
install.packages("pak")
# 或者 从github安装二进制版本,需要良好的网络 
install.packages("pak", repos = sprintf("https://r-lib.github.io/p/pak/stable/%s/%s/%s", .Platform$pkgType, R.Version()$os, R.Version()$arch))

安装、更新 CRAN 或 Bioconductor 的工具

pak 会自动设置与当前 R 版本对应的 CRAN 仓库和 Bioconductor 仓库:

r 复制代码
pak::pkg_install("tibble")

log:

#> ✔ Loading metadata database ... done
#>
#> → Will install 11 packages.
#> → Will download 11 CRAN packages (4.52 MB).
#> + cli         3.6.3 [bld][cmp][dl] (569.77 kB)
...
#>
#> ℹ Getting 11 pkgs (4.52 MB)
#> ✔ Got pkgconfig 2.0.3 (source) (6.08 kB)
#> ✔ Got magrittr 2.0.3 (source) (267.07 kB)
...
#> ℹ Building tibble 3.2.1
#> ✔ Built tibble 3.2.1 (3s)
#> ✔ Installed tibble 3.2.1  (1.2s)
#> ✔ 1 pkg + 10 deps: added 11, dld 11 (4.52 MB) [50.6s]
Reinstall

直接在R package 名字后面添加 ?reinstall

r 复制代码
pak::pkg_install("tibble?reinstall")

log:

#>
#> → Will install 1 package.
#> → The package (724.32 kB) is cached.
#> + tibble   3.1.7
#> ℹ No downloads are needed, 1 pkg (724.32 kB) is cached
#> ✔ Installed tibble 3.1.7  (42ms)
#> ✔ 1 pkg + 12 deps: kept 11, added 1 [343ms]
升级更新 R Rackages

如果已经安装过,会自动检查并更新:

r 复制代码
pak::pkg_install("tibble")
# 同时更新所有依赖
pak::pkg_install("tibble", upgrade = TRUE)

log:

#>
#> → Will update 1 package.
#> → The package (724.32 kB) is cached.
#> + tibble 3.1.7 → 3.1.8
#> ℹ No downloads are needed, 1 pkg (724.32 kB) is cached
#> ✔ Installed tibble 3.1.8  (36ms)
#> ✔ 1 pkg + 10 deps: kept 10, upd 1 [368ms]

从 GitHub 安装

使用user/repo 的形式。你可以指定一个分支或标签:user/repo@branch 或 user/repo@tag:

r 复制代码
pak::pkg_install("tidyverse/tibble")

log:

#>
#> → Will update 1 package.
#> → The package (0 B) is cached.
#> + tibble 3.2.1 → 3.2.1.9027 [bld][cmp] (GitHub: fcb2461)
#>
#> ℹ No downloads are needed, 1 pkg is cached
#> ✔ Got tibble 3.2.1.9027 (source) (5.25 MB)
#> ℹ Packaging tibble 3.2.1.9027
#> ✔ Packaged tibble 3.2.1.9027 (1.3s)
#> ℹ Building tibble 3.2.1.9027
#> ✔ Built tibble 3.2.1.9027 (2.8s)
#> ✔ Installed tibble 3.2.1.9027 (github::tidyverse/tibble@fcb2461) (1s)
#> ✔ 1 pkg + 10 deps: kept 10, upd 1, dld 1 (NA B) [8.6s]

从 URL 安装

URL 可能指向一个由 R CMD build 创建的 R 包文件,或者一个包含包目录树的 .tar.gz 或 .zip 压缩包:

r 复制代码
pak::pkg_install(
  "url::https://cran.r-project.org/src/contrib/Archive/tibble/tibble_3.1.7.tar.gz"
)

log:

#>
#> → Will install 1 package.
#> → Will update 1 package.
#> → All 2 packages (38.65 kB) are cached.
#> + ellipsis              0.3.2
#> + tibble   3.1.8.9002 → 3.1.7 👷🏻‍♀️🔧
#> ℹ No downloads are needed, 2 pkgs (38.65 kB) are cached
#> ✔ Installed ellipsis 0.3.2  (18ms)
#> ℹ Building tibble 3.1.7
#> ✔ Built tibble 3.1.7 (2.5s)
#> ✔ Installed tibble 3.1.7  (31ms)
#> ✔ 1 pkg + 11 deps: kept 10, upd 1, added 1 [3.3s]

安装本地工具及其依赖项

使用:

r 复制代码
pak::local_install("cli")

log:

#>
#> → Will update 1 package.
#> → The package (0 B) is cached.
#> + cli 3.6.3 → 3.6.3 [bld][cmp]
#>
#> ℹ No downloads are needed, 1 pkg is cached
#> ✔ Got cli 3.6.3 (source) (568.16 kB)
#> ℹ Packaging cli 3.6.3
#> ✔ Packaged cli 3.6.3 (967ms)
#> ℹ Building cli 3.6.3
#> ✔ Built cli 3.6.3 (7.8s)
#> ✔ Installed cli 3.6.3 (local) (34ms)
#> ✔ 1 pkg: upd 1, dld 1 (568.16 kB) [9.6s]

查找、解释依赖

查找依赖:

r 复制代码
pak::pkg_deps_tree("tibble")

log:

#> tibble 3.2.1 [new][bld][cmp]
#> ├─fansi 1.0.6 [new][bld][cmp]
#> ├─lifecycle 1.0.4 [new][bld]
#> │ ├─cli 3.6.3 [new][bld][cmp]
#> │ ├─glue 1.7.0 [new][bld][cmp]
#> │ └─rlang 1.1.4 [new][bld][cmp]
#> ├─magrittr 2.0.3 [new][bld][cmp]
#> ├─pillar 1.9.0 [new][bld]
#> │ ├─cli
#> │ ├─fansi
#> │ ├─glue
#> │ ├─lifecycle
#> │ ├─rlang
#> │ ├─utf8 1.2.4 [new][bld][cmp]
#> │ └─vctrs 0.6.5 [new][bld][cmp]
#> │   ├─cli
#> │   ├─glue
#> │   ├─lifecycle
#> │   └─rlang
#> ├─pkgconfig 2.0.3 [new][bld]
#> ├─rlang
#> └─vctrs
#>
#> Key:  [new] new | [bld] build | [cmp] compile

解释依赖:

r 复制代码
pak::pkg_deps_explain("tibble", "rlang")

log:

#> tibble -> lifecycle -> rlang
#> tibble -> pillar -> lifecycle -> rlang
#> tibble -> pillar -> rlang
#> tibble -> pillar -> vctrs -> lifecycle -> rlang
#> tibble -> pillar -> vctrs -> rlang
#> tibble -> rlang
#> tibble -> vctrs -> lifecycle -> rlang
#> tibble -> vctrs -> rlang

就是一个依赖一个又依赖另一个...

pak 官方文档:

pak

相关推荐
杨荧9 分钟前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
白子寰16 分钟前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT28 分钟前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习
为将者,自当识天晓地。30 分钟前
c++多线程
java·开发语言
小政爱学习!32 分钟前
封装axios、环境变量、api解耦、解决跨域、全局组件注入
开发语言·前端·javascript
k09331 小时前
sourceTree回滚版本到某次提交
开发语言·前端·javascript
神奇夜光杯1 小时前
Python酷库之旅-第三方库Pandas(202)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
Themberfue1 小时前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧1 小时前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python