簡體   English   中英

如何在舊的不兼容版本的R上安裝新的R包

[英]How to install a new R package on old, incompatible version of R

由於公司的IT要求,我被迫使用R 3.2.2。 我需要使用一些技術上要求R> 3.2.2的軟件包(主要是2版或更高版本)。 我知道有時可以“欺騙”該程序包使其在較舊的,不兼容的R版本中運行,但是我不確定如何執行此操作。

我使用較新版本的R下載了該軟件包,然后按照Patrick在這里建議的那樣調整了描述文件( 如何從基於R-3.4.0構建的GitHub將R軟件包安裝到R-3.3.0? ),以及將軟件包文件移到了R 3.2.2庫路徑中,但是沒有用。 我收到錯誤“錯誤:這是R 3.2.2,程序包'prophet'需要> = 3.2.3”。

有人有想法/建議嗎? 謝謝!

預先說明:@prosoitos關於使用較舊版本軟件包的評論可能是最好的選擇,如果可以找到的話。 我相信MRAN聲稱所有軟件包的日常版本都可以追溯到很長時間 ,還有checkpoint軟件包可以凍結項目的軟件包狀態。 實際上,嘗試使用該程序包,可能會使以下幾個“技巧”(請不要隨便使用它們)變得不必要。


確實有些軟件包可能“錯誤地要求R版本”,而是方便地選擇開發人員正在使用的R版本和/或從其他軟件包復制的任意版本。 然而:

  1. 在不了解軟件包代碼內部的情況下,您無法知道是否是真正的要求。

    如果開發人員認真地使用適當定義的R版本要求,則可以瀏覽包的提交歷史記錄(假設github,gitlab或其他一些可訪問的版本控件),並在DESCRIPTION查找R版本的更改時間,然后查看以前的提交以查看哪些更改建議版本增加。 如果幸運的話,提交消息本身會說類似“添加參數xyz =,要求使用新的R”之類的字詞 ,但是我懷疑這並不能保證,甚至不可能。

  2. 缺少這一點,可能有一個功能(舊版或新版)需要R的較新版本,但沒有其他更改。 在我看來,這似乎是合理的,並且可能還需要進行一些偵查才能確認。

  3. 即使您發現了此問題,也可能取決於具有類似定義的版本要求的其他軟件包。 因此,即使您為一個程序包解決了問題,它也可能會級聯成幾個或幾十個程序包。 (提示:也許checkpoint看起來更好,因為它對此有所幫助。)

如果您以某種方式確定(a)您知道R版本要求是錯誤的,或者(b)您知道其要求是什么,並且您願意在沒有這些參數或函數的情況下生活,那么:

  1. 克隆或下載源代碼;
  2. 編輯DESCRIPTION並更改R版本,建議您也更改軟件包的版本號,以便知道所使用的版本。 並且您還應該注意其他軟件包的版本要求,因為這可能暗示API發生了更改等;
  3. 生成/安裝本地版本。

但是...可能會有細微差別的代碼(和/或文檔中的示例代碼)在舊版本中不起作用。 而且,對一個軟件包有效的方法不一定對另一個軟件包有效。

這是買權人的真實情況。 代碼破解的風險很高。 必須對多個程序包執行此手動過程的可能性很高。 第一次全部起作用的可能性很小。

(當然,您可以隨時與開發人員/維護人員聯系。)

這不是您問題的確切答案。 但是您是否聽說過conda軟件包管理器(它對於編程語言和許多其他與系統相關的程序是通用的)?

您可以通過在虛擬conda環境中本地安裝更高版本的R,並在虛擬環境中運行它來解決頭痛(無需管理員權限)。

要學習使用conda,請使用Corey Schafer的教程非常好-並在12分鍾內教會您conda...。 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”-例如我確實做到了 您從此處獲得的二進制文件或資源。 但是,在這種情況下,您通常必須以管理員身份安裝軟件包。

使用.libPath()函數,您可以完全控制應訪問/不使用哪些庫(位於文件夾中)。 這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM