缓解新手 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

相关推荐
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备4 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
科创致远4 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超4 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int4 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++