0

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

我使用较新版本的 R 下载了该软件包,然后按照 Patrick 此处的建议调整了描述文件(如何从 GitHub 将 R 软件包安装到 R-3.3.0,它是基于 R-3.4.0 构建的?),并且将包文件移动到 R 3.2.2 库路径中,但它不起作用。我收到错误“错误:这是 R 3.2.2,包 'prophet' 需要 >= 3.2.3。”

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

4

2 回答 2

3

预先:@prosoitos 关于使用旧版本软件包的评论可能是你最好的选择,如果你能找到它们。我相信MRAN声称拥有所有包的每日版本,以及checkpoint用于冻结项目包状态的包。实际上,尝试使用该软件包,它可能会使以下几个“技巧”(请不要随便使用)变得不必要。


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

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

    如果开发者有意识地使用适当定义的 R 版本要求,你可以通过包的提交历史(假设 github、gitlab 或其他一些可访问的版本控制)找到 R 版本何时更改DESCRIPTION,并查看前面的提交以查看建议版本增加的更改。如果幸运的话,提交消息本身会说“添加参数 xyz=,需要更新的 R”,但我怀疑这并不能保证甚至是不可能的。

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

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

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

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

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

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

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

于 2018-10-22T16:33:57.600 回答
0

这不是您问题的确切答案。但是您是否听说过conda包管理器(编程语言和许多其他系统相关程序通用的包管理器)?

您可以通过将更高版本的 R 本地安装到虚拟 conda 环境中来解决您的头痛 - 没有管理员权限 - 并拥有它并在虚拟环境中运行它。

要学习使用 conda 使用Corey Schafer 的教程非常好 - 并在 12 分钟内教你 conda ...。Anaconda 只是一个变体,但我使用 miniconda - produre 和命令是相同的。

# install miniconda on linux 64 bit on python 3.7 background
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# linux 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86.sh
bash Miniconda3-latest-Linux-x86.sh

# windows 64 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86_64.exe
# and run it 

# windows 32 bit python 3.7
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Windows-x86.exe
# and run it

# other combinations and conditions and operating systems and python 2.7
# https://conda.io/miniconda.html

# after installation, in terminal, conda is available from 
# wherever you are.
# create conda environment for R-3.5.1 the newest
conda create --name R351
# enter the virtual environment
source activate R351
# install R-3.5.1
conda install -c r r-base
# start R
R
# quit R and quit the environment
source deactivate

我搜索了很久这样的版本问题。这是最干净的解决方案......

但实际上也没有 conda,您可以在本地安装更高的 R 版本(为此您不需要 sudo 权限)并运行“/path/to/your/local/R-3.5.1/bin/R” - 例如- 我确实这样做了。您从这里获得的二进制文件或来源。但是,在这种情况下,您通常必须以管理员身份安装软件包。

使用该.libPath()功能,您可以完全控制哪些库(位于文件夹中)应该被访问/使用。见这里

于 2018-10-22T16:46:14.190 回答