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

相关推荐
神仙别闹几秒前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE2 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
zwjapple18 分钟前
typescript里面正则的使用
开发语言·javascript·正则表达式
小五Five19 分钟前
TypeScript项目中Axios的封装
开发语言·前端·javascript
前端每日三省21 分钟前
面试题-TS(八):什么是装饰器(decorators)?如何在 TypeScript 中使用它们?
开发语言·前端·javascript
gma99928 分钟前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️31 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
凡人的AI工具箱34 分钟前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
chnming19871 小时前
STL关联式容器之map
开发语言·c++
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python