gpt4 book ai didi

r - 如何最小化 R 包的安装大小

转载 作者:行者123 更新时间:2023-12-04 03:42:22 26 4
gpt4 key购买 nike

在我的工作场所,我们正在为不同版本的 R 安装大量库。所需的大小正在迅速增加。我该怎么做才能尽可能减少每次安装?我知道 --no-docs 并且我需要 --with-keep.source

编辑:这是对我的设置的快速研究

我在 /tmp/library 中复制了我的库

library(fs)                                                                             
library(data.table)
library(stringr)
lib_dir <- "/tmp/library"
pkgs <- dir_ls(lib_dir)
dirs <- dir_info(pkgs, recurse = TRUE)[,1:3]
setDT(dirs)
dirs <- dirs[type != "directory"]

# ==> We can see files at the root of each library take 12M in aggreagte <==
dirs[depth == 4, .(size = sum(size))]
# size
# 1: 12M

dirs[, depth := str_count(path, "/")]
dirs[, pkg := file.path(lib_dir, str_match(path, sprintf("%s/(.*?)/.*", lib_dir))[,2L])]
dirs[depth > 4L, pkg_dir := str_match(path, sprintf("%s/(.*?)/.*", pkg))[,2L]]

# ==> The worst offenders are indeed libs, and lib is also large <==
dirs[depth > 4, .(size = sum(size)), pkg_dir][order(-size)][1:10]
# pkg_dir size
# 1: libs 610.77M
# 2: include 144.18M
# 3: doc 140.93M
# 4: lib 104.58M
# 5: R 91.31M
# 6: help 61.78M
# 7: html 51.02M
# 8: data 25.9M
# 9: java 11.74M
# 10: www 8.38M

然后我在 libslib 上运行 strip --strip-debug 以达到以下目的

dirs[depth > 4, .(size = sum(size)), pkg_dir][order(-size)][1:10]
# pkg_dir size
# 1: include 144.18M
# 2: doc 140.93M
# 3: libs 95.24M
# 4: R 91.31M
# 5: help 61.78M
# 6: html 51.02M
# 7: data 25.9M
# 8: java 11.74M
# 9: www 8.38M
# 10: htmlwidgets 8.24M

从上面的示例中我有以下问题:docs 似乎包含我可以通过 browseVignettes() 访问的小插曲 我不需要这个,但我仍然需要 help("stuff") 开始工作。

  • 我可以使用 --no-docs--no-help 来实现吗(我试过但是运行 R CMD INSTALL --no-docs --no-html xtable 仍然生成 pdf 和 html 文件)?
  • 在不失去基本功能的情况下,还有什么我可以节省的吗?

最佳答案

Dirk EddelBuettel 在 2017 年写了两篇博文,这里很难总结。 R 包很大,但它不是来自文档或源代码。它来自二进制文件是使用调试符号编译的事实。这个想法是用更具体的选项自己编译包,以摆脱二进制文件中无用的东西。对于带有编译代码的包来说, yield 非常显着(空间减少 4-5 倍)

关于r - 如何最小化 R 包的安装大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65748746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com