gpt4 book ai didi

r - 无论操作系统如何,如何使 CRAN 包只下载一次数据?

转载 作者:行者123 更新时间:2023-12-03 15:46:21 28 4
gpt4 key购买 nike

CRAN policy limits R package size to 5 Mb ,这对于绘图等图形应用程序来说很少。有多种处理封装尺寸限制的方法,所有这些方法都有其缺点。下面列出了替代方案。
我的问题是:如何让 R 包只下载一次数据文件 (即它们被保存到重新启动后 R 找到它们的地方)?该解决方案应该适用于所有常见的 CRAN 平台。
我一直在开发mapping package for R应该在 ggplot2 中绘制全局任何地方的测深图.我列出了在我遇到的 CRAN 包中处理大型数据文件的替代方法。替代方案是在编写 map 时考虑到的,但适用于需要大型单个文件的任何情况:

  • 搬家 large files to a data package并使原始包依赖于数据包。
  • a) 如果数据包<5Mb,可以上传到CRAN,可以在description字段中做原始依赖或者导入数据包。用户可以简单地使用 install.packages()功能与任何其他 CRAN 包一样。事情进展顺利,每个人都很开心。
  • b) 如果数据包大于 5 Mb,事情就会变得一团糟。理论上,一种替代方法是为每个文件制作一个单独的数据包,前提是数据文件都小于 5 Mb。然后可以对每个数据包使用 1a 中的方法。这个替代方案太老套了,以至于我没有勇气在实践中尝试它。如果有人在评论中听到会很有趣。
  • c) 另一个更好的选择是使用 drat package制作 data package, for example, to GitHub .这个替代方案的好处是用户可以写 install.packages()从 CRAN 安装原始软件包,但对开发人员来说也有很​​多缺点。设置数据包以通过所有 CRAN 检查可能有点困难,因为目前在线任何地方都没有正确指定所有步骤:原始包必须请求许可才能安装数据包;数据包必须作为单独的二进制文件分发给当前 R 的当前开发版本,至少适用于 Windows 和 Mac,但也可能适用于 drat 存储库中的 Fedora;数据包应列为Suggests:带有 URLAdditional_repositories:在描述文件中;提一下我目前遇到的一些惊喜。总而言之,这种替代方案对用户来说很好,但需要开发人员进行维护。

  • 一些映射包(如 marmap )将数据下载到 temporary files来自外部服务器。这种方法的好处是很容易满足 CRAN 要求,并且用户不必存储比应用程序所需更多的数据。该方法还允许在下载函数中指定分辨率,这对于“缩放” map 非常有用。缺点是该过程必然比简单地在本地存储 map 数据花费更多时间。另一个缺点是 map 数据需要以栅格格式分发(或者服务器必须裁剪矢量)。在撰写本文时,与栅格数据相比,矢量数据允许在 R 和 ggplot2 中更轻松地操作颜色和样式。由于元素不受分辨率的限制,因此矢量还可以使图形更清晰。第三个缺点是,由于操作系统差异,在编写 CRAN 包时,下载方法(据我所知)必须针对临时文件(即,当 R 重新启动时它们会丢失)。据我所知,不允许将 Rdata 文件添加到已经下载的和现有的 R 包中,并且找到一个位置来下载适用于所有主要 CRAN 操作系统的数据可能很困难。

  • 我一次又一次地被 CRAN 拒绝,因为我没有设法解决数据下载问题。网上有一些帮助,但我觉得这个问题还没有得到充分解决。最佳解决方案是下载 sp矢量形状文件
    在制作 map 时根据需要(对象可以以 .Rdata 格式存储)。这将允许为某些经常需要的区域添加详细的 map 。 shapefile 可以存储在 GitHub 上,这将允许在开发过程中快速灵活地修改这些文件。

    最佳答案

    您是否尝试过使用 xz 压缩来减小 sysdata 的大小?我相信默认是 gzip,压缩级别设置为 6。如果在使用 save() 保存包数据时使用 bzip2 或 xz 压缩, R 将结合使用这些压缩算法,压缩级别为 9。结果是您得到更小的包数据对象。

    关于r - 无论操作系统如何,如何使 CRAN 包只下载一次数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63703476/

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