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

时间:2018-10-22 16:10:06

标签: r facebook-prophet

由于我公司的IT要求,我被迫使用R 3.2.2。我需要使用一些技术上要求R> 3.2.2的软件包(主要是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,软件包“先知”需要> = 3.2.3”

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

2 个答案:

答案 0 :(得分:3)

前期:如果可能的话,@ prosoitos关于使用较旧版本软件包的评论可能是最好的选择。我相信MRAN声称拥有所有软件包的每日版本,而且还有checkpoint软件包可以冻结项目的软件包状态。实际上,尝试使用该软件包,可能会导致以下几个“技巧”(请不要随便使用它们)成为不必要。


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

  1. 在不知道软件包代码内部的情况下,您无法知道是否是真正的要求。

    如果开发人员认真地使用适当定义的R版本要求,则可以遍历软件包的提交历史记录(假设github,gitlab或其他一些可访问的版本控件),并在{{1 }},并查看以前的提交,以了解哪些更改建议版本增加。如果您很幸运,提交消息本身会说类似“添加参数xyz =,需要更新的R” 之类的东西,但是我不确定,甚至不能保证。

  2. 缺少该功能,可能有一个功能(旧版或新版)需要较新的R版本,但没有其他更改。在我看来,这似乎是合理的,并且可能再次需要进行侦查才能确认。

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

如果您以某种方式确定(a)您知道R版本要求是错误的,或者(b)您知道要求什么,并且您愿意不使用这些参数或函数,那么:

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

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

这是确证购买人的真实情况。代码破解的风险很高。必须对多个程序包执行此手动过程的可能性很高。第一次全部起作用的可能性很小。

(当然,您总是可以与开发人员/维护人员联系。)

答案 1 :(得分:0)

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

您可以通过在虚拟conda环境中本地安装更高版本的R并在虚拟环境中运行它来解决头痛(无需管理员权限)。

要学习使用conda,请使用Corey Schafer's tutorials are very good - and teaches you conda within merely 12 min ...。 Anaconda只是一个变体,但我使用miniconda-产品和命令是相同的。

# 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 “-例如我确实做到了 您从here获得的二进制文件或源文件。但是,在这种情况下,您通常必须以admin身份安装软件包。

使用.libPath()函数,您可以完全控制应该访问/不使用位于文件夹中的哪些库。 参见here