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

2024-01-26

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

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

我将我的图书馆复制到/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

然后我跑了strip --strip-debug on libs and lib达到以下目的

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 or --no-help(我尝试过,但是运行R CMD INSTALL --no-docs --no-html xtable仍然生成 pdf 和 html 文件)?
  • 我可以在不失去基本功能的情况下保存其他内容吗?

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

  • http://dirk.eddelbuettel.com/blog/2017/08/14/#009_compact_shared_libraries http://dirk.eddelbuettel.com/blog/2017/08/14/#009_compact_shared_libraries
  • http://dirk.eddelbuettel.com/blog/2017/08/20/#010_stripping_shared_libraries http://dirk.eddelbuettel.com/blog/2017/08/20/#010_stripping_shared_libraries
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何最小化 R 包的安装大小 的相关文章

  • 查找嵌套列表中元素的索引?

    我有一个类似的列表 mylist lt list a 1 b list A 1 B 2 c list C 1 D 3 是否有一种 无循环 方法来识别元素的位置 例如如果我想用 5 替换 C 的值 并且在哪里找到元素 C 并不重要 我可以这样
  • 如何在R中得到一个大的稀疏矩阵? (> 2^31-1)

    我使用一些 C 代码从数据库中获取文本文件 并从该文件创建 dgcMatrix 类型稀疏矩阵Matrix包裹 我第一次尝试构建一个具有超过 2 31 1 个非稀疏成员的矩阵 这意味着稀疏矩阵对象中的索引向量也必须比该限制长 不幸的是 向量似
  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 如何调整ggplot直方图的时间刻度轴

    我正在使用一个数据框 其中一列包含POSIXct日期时间值 我正在尝试使用绘制这些时间戳的直方图ggplot2但我有两个问题 我不知道如何设置 binwidthgeom histogram 我想将每个垃圾箱设置为一天或一周 我尝试提供 di
  • R从列表中提取数据框,列名中没有前缀

    我在列表中放置了一个数据框 然后 当尝试将其提取回来时 我得到了该数据帧的所有以列表键为前缀的列名称 有没有办法完全按照最初传递的方式提取数据帧 cols lt c column1 Column2 Column3 df1 lt data f
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • R 中的发散积分可在 Wolfram 中求解

    我知道我以前问过同样的问题 但由于我是新来的 这个问题问得不好而且不可重现 因此我在这里尝试做得更好 如果我只编辑旧的 可能没有人会读它 我有一个想要积分的二重积分 ff lt function g t exp 16 g exp 8 t t
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 如何将此“for”循环转换为向量解

    这个问题与 将嵌入其他文本的长州名称转换为两个字母的州缩写 https stackoverflow com questions 25582518 convert long state names embedded with other te
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 具有 dplyr、tidyverse 和 broom 的相关矩阵 - P 值矩阵

    全部 我想使用以下方法从相关矩阵中获取 p 值dplyr 和 或扫帚包 并同时测试多个变量 我知道其他方法 但 dplyr 对我来说似乎更简单 更直观 此外 dplyr 需要关联每个变量以获得特定的 p 值 这使得该过程更容易 更快 我检查
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 如何在android中从互联网获取当前时间

    我正在制作一个应用程序 我想在其中从互联网获取当前时间 我知道如何使用设备获取时间System currentTimeMillis 即使经过很多搜索 我也没有得到任何关于如何从互联网获取它的线索 您可以使用以下程序从互联网时间服务器获取时间
  • MIPS 浮点:swc1 与 s.s

    我正在做一些涉及的工作MIPS汇编 我不断遇到这四个浮点加载 存储伪指令 l s l d s s s d 我在网上找到了一些文档 发现有四个 实际 指令似乎可以做同样的事情 lwc1 ldc1 swc1 and sdc1 我唯一的问题是 有
  • Java 和 Android 之间的 Base64 编码/解码错误

    我在 Java 和 Android 之间编码 解码 Base64 时遇到问题 这是我的案例 我在Java上使用ECC编写了加密 解密代码 我的代码运行得很好 然后我尝试在Java上加密字符串并在Android上解密这个加密的字符串 但失败了
  • 1-15 的正则表达式? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我很难为 0 15 的数字输入组合正
  • 我怎样才能快速转换这个日期格式?

    我想转换Wed Jul 01 04 48 51 0000 2015 to 2015 07 01我在下面尝试过 但它不能很好地执行 返回零 let d Wed Jul 01 04 48 51 0000 2015 let formatter N
  • OnLocationChanged 回调永远不会被调用

    我正在尝试使用以下命令获取用户当前位置LocationManager 我做了很多研究 似乎找不到任何人有同样的问题 这OnLocationChanged回调似乎从未被调用 下面是我的各种代码和 logcat protected Locati
  • 在 Windows Phone 上部署 Sencha 触摸应用程序

    我有一个现有的 Sencha touch 项目 我想将其部署在 Windows Phone 设备上 到目前为止 我已经尝试将 Sencha touch 与 Phonegap 结合起来 通过 Phonegap 进行部署 但没有成功 据报道 由
  • .:format 在 rake 路由中意味着什么

    我输入 rake 路线 然后得到一堆像这样的 url articles id format 我的问题是 什么是 format意思是 Rails Guides Routing 文章中并不清楚 并且没有其他有用的匹配项 format在 Stac
  • 笛卡尔坐标到极坐标(3d 坐标)

    如何在 3D 空间中的笛卡尔坐标系和极坐标系 以及反坐标系 之间进行转换 最好有一个 C 示例 但任何内容都将不胜感激 谢谢 Edit当考虑20 的变化时 不形成球体 Edit 2 private void Spherise for int
  • 如何在 ASP.NET 中上传图像文件而不进行任何回发

    我正在使用上传文件
  • 无法在 getRequiredModulePath 的 NodeObject.getText 处读取未定义的属性“文本”

    生成浏览器应用程序包时发生错误 阶段 设置 什么可能导致此错误 来自控制台的信息 生成浏览器应用程序包 阶段 设置 类型错误 无法读取未定义的属性 文本 在 NodeObject getText opt app root src node
  • Vee-Validate validateAll() 范围

    我有一个场景 我已经划分出 范围 一个表单 以便我可以使用以下函数一次验证小块 validateScope scope return this validator validateAll scope 我想在将整个表单提交到服务器之前对其进行
  • 如何从Word 2010 Addin(用C#开发)获取“KeyPress”事件?

    如何从用 C 开发的 Word 2010 Addin 捕获 KeyPress 事件 注意 我不是在寻找 复杂 的解决方案 例如挂钩之类的东西 而是在寻找漂亮整洁的解决方案 NET 甚至来自对象模型 我 手中 的应用程序对象是 Microso
  • Angular 2在路由时传递对象

    我试图在路由时在页面之间传递对象 数组 为此我做了什么这个答案 https stackoverflow com questions 35478994 angular 2 passing object via route params pos
  • 如何为 lm() 设置平衡单向方差分析

    我有数据 dat lt data frame NS c 8 56 8 47 6 39 9 26 7 98 6 84 9 2 7 5 EXSM c 7 39 8 64 8 54 5 37 9 21 7 8 8 2 8 Less 5 c 5 9
  • getRootPane() 默认按钮 - 这是一个错误吗?

    我做了一个SSCE 请注意 它必须是 Windows 外观和感觉 import java awt import javax swing public class DefaultButtonBug private static final S
  • tbl_df 被转换为 S4 类中的列表

    当我尝试使用时tbl df在中四班 tbl df插槽似乎转变为list library tibble setOldClass c tbl df tbl data frame setClass Class TestClass slots c
  • 转置和扩展数据

    我的熊猫数据框如下所示 Country Code 1960 1961 1962 1963 1964 1965 1966 1967 1968 2015 ABW 2 615300 2 734390 2 678430 2 929920 2 963
  • FFmpeg 的 avcodec_decode_audio3 返回 -1

    我在android上使用FFmpeg来解码mp3 我在配置中设置了所有解码器启用并正确制作了 so 文件 这是为配置文件添加参数的 sh NDK android ndk r5b PLATFORM NDK platforms android
  • 如何最小化 R 包的安装大小

    在我的工作场所 我们正在为不同版本的 R 安装许多库 所需的大小正在迅速增加 我可以做什么来尽可能减少每次安装 我知道 no docs 并且我需要 with keep source EDIT 这是对我的设置的快速研究 我将我的图书馆复制到