r - 如何在旧的、不兼容的 R 版本上安装新的 R 包

标签 r facebook-prophet

由于公司的 IT 要求,我被迫使用 R 3.2.2。我需要使用一些技术上需要 R > 3.2.2 的软件包(主要是 Prophet 版本 2 或更高版本)。我知道有时可以“欺骗”包在旧的、不兼容的 R 版本中运行,但我不确定如何做到这一点。

我使用较新版本的 R 下载了该包,然后按照 Patrick 此处的建议调整了描述文件 ( How to install an R package to R-3.3.0 from GitHub, which is built on R-3.4.0? ),并将包文件移动到 R 3.2.2 库路径中,但它不起作用。我收到错误“错误:这是 R 3.2.2,包‘prophet’需要 >= 3.2.3。”

有人有想法/建议吗?谢谢!

最佳答案

前面:@prosoitos 关于使用旧版本软件包的评论可能是您最好的选择,如果您能找到它们。我相信MRAN声称所有软件包的每日版本都可以追溯到很长一段时间,以及 checkpoint用于卡住项目包状态的包。事实上,尝试使用该包,它可能会使下面的几个“技巧”(请不要随意使用它们)变得不必要。

2023 年更新:MRAN is retired 。 Posit(前身为 RStudio 公司)的 Posit Package Manager ,它提供(afaic)MRAN 的所有优势/功能;他们甚至还有 migrate from MRAN 的指南(虽然实际上不需要太多,但迁移相当简单)。


确实,某些软件包可能“错误地需要 R 版本”,而是方便地选择开发人员正在使用的 R 版本和/或他们从另一个软件包复制的任意版本。但是:

  1. 如果不了解包代码的内部结构,您就无法知道这是否是真正的需求。

    如果开发人员认真使用适当定义的 R 版本要求,您可以查看包的提交历史记录(假设 github、gitlab 或其他一些可访问的版本控制)并在 中查找 R 版本何时更改描述,并查看之前的提交以了解哪些更改建议版本增加。如果幸运的话,提交消息本身会说“添加参数 xyz=,需要更新的 R”之类的内容,但我怀疑这并不能保证,甚至不可能。

  2. 缺少这一点,可能有一个函数(旧版或新版)需要较新版本的 R,但其他任何内容都没有更改。这对我来说似乎是合理的,并且可能再次需要一些调查来确认。

  3. 即使您发现了这一点,它也可能依赖于具有类似定义的版本要求的其他软件包。因此,即使您解决了一个包的问题,​​它也可能会级联成几个或几十个包。 (提示:也许 checkpoint 看起来更好,因为它对此有所帮助。)

如果您以某种方式确定 (a) 您知道 R 版本要求是错误的,或者 (b) 您知道它需要什么并且您愿意在没有这些参数或函数的情况下生活,那么:

  1. 克隆或下载源代码;
  2. 编辑DESCRIPTION并更改R版本,我建议您也更改包版本号,以便您知道您正在使用哪个版本;并且您还应该注意其他软件包的版本要求,因为它可能暗示 API 更改等;和
  3. 构建/安装本地版本。

但是......代码(和/或文档中的示例代码)可能存在细微差别,这些细微差别在旧版本中不起作用。而且,对一个包有效的方法不一定对另一个包有效。

这是一个真正的“买者自负”案例。密码破解的风险很高。必须对多个包执行此手动过程的可能性很高。第一次全部成功的可能性很低。

(当然,您可以随时联系开发人员/维护人员询问。)

关于r - 如何在旧的、不兼容的 R 版本上安装新的 R 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52933547/

相关文章:

python - 是否可以使用 FB Prophet 进行多元多步预测?

python - 预言家在 google colab 返回 - 错误 : KeyError: 'metric_file'

r - 使用 R 文本分析进行词干提取

r - 在 R 中隐藏个人功能

dataset - 先知预测的诊断问题

python - 在 Windows 10 上安装 fbprophet Python

python - 停止打印信息 :cmdstanpy:start chain 1, 信息:cmdstanpy:完成链 1

css - 如何更改某些 textOutput 元素的字体?

r - 如何用文本替换表情符号并将它们视为单个单词?

r - 如何让 R 使用更多的 CPU 和内存?