Как установить новый пакет R на старую несовместимую версию R - PullRequest
0 голосов
/ 22 октября 2018

Я вынужден использовать R 3.2.2 из-за требований ИТ в моей компании.Мне нужно использовать несколько пакетов, которые технически требуют R> 3.2.2 (в основном, пророк версии 2 или выше).Я знаю, что иногда можно «обмануть» пакет для запуска в более старой несовместимой версии R, но я не уверен, как это сделать.

Я загрузил пакет, используя более новую версию R, затемскорректировал файл описания, как предложил Патрик, здесь ( Как установить пакет R на R-3.3.0 из GitHub, который построен на R-3.4.0? ), и переместил файл пакета вR 3.2.2 путь к библиотеке, но он не работает.Я получаю сообщение об ошибке "Ошибка: это R 3.2.2, пакет 'prophet' нуждается> = 3.2.3."

У кого-нибудь есть идеи / предложения?Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Это не точный ответ на ваш вопрос.Но слышали ли вы о conda диспетчере пакетов (который универсален для языков программирования и многих других системных программ)?

Вы можете решить свою головную боль - без прав администратора - локально установив более высокие версии R ввиртуальная среда conda - и запустите ее в виртуальной среде.

Чтобы научиться использовать conda, используйте Учебники Кори Шефера очень хороши - и обучают вас conda всего за 12 минут ... .Анаконда - просто вариант, но я использую миниконду - процедура и команда одинаковы.

# 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(), вы можете получить полный контроль над тем, какие библиотеки - которые находятся в папках - должны быть доступны / использованы или нет.См. здесь .

0 голосов
/ 22 октября 2018

Предварительно: комментарий @prosoitos об использовании более старых версий пакетов, вероятно, будет лучшим выбором, если вы сможете их найти.Я считаю, что MRAN утверждает, что ежедневные версии всех пакетов возвращаются довольно далеко, вместе с пакетом checkpoint для замораживания состояния пакетов для вашего проекта.На самом деле, попробуйте использовать этот пакет, он может сделать некоторые из перечисленных ниже «хитростей» (пожалуйста, не используйте их случайно) ненужными.


Это правда, что некоторые пакеты могут «ложно требовать версии R"вместо удобного выбора версии R, которую использует разработчик, и / или произвольной версии, которую они скопировали из другого пакета.Однако:

  1. Вы не сможете узнать, является ли это истинным требованием, не зная внутренности кода пакета.

    Если разработчик добросовестно использует надлежащим образом-определенные требования к версии R, вы можете просмотреть историю коммитов пакета (при условии, что github, gitlab или какой-то другой доступный контроль версий) и найти, когда версия R изменилась в DESCRIPTION, и посмотреть предыдущие коммиты.чтобы увидеть, какие изменения предложили увеличить версию.Если вам повезет, в самих сообщениях коммита будет что-то вроде "add аргумент xyz =, требующий более нового R" , но я подозреваю, что это не гарантировано или даже вероятно.

  2. В отсутствие этого может существовать одна функция (устаревшая или новая), для которой требуется более новая версия R, но больше ничего не изменилось.Мне это кажется правдоподобным, и для подтверждения снова может потребоваться некоторая проверка.

  3. Даже если вы обнаружите это, вполне вероятно, что это зависит от других пакетов, имеющих аналогично определенные требования к версии.Таким образом, даже если вы разберетесь в одном пакете, он может каскадно объединиться в несколько или десятки пакетов.(Подсказка: возможно, checkpoint выглядит лучше, поскольку это помогает в этом.)

Если вы каким-либо образом определите, что либо (а) вы знаете, что требование R-версии неверно,или (б) вы знаете, что для этого требуется, и вы готовы жить без этих аргументов или функций, а затем:

  1. клонировать или загрузить исходный код;
  2. изменить DESCRIPTION иизмените версию R, и я предлагаю вам также изменить номер версии пакета, чтобы вы знали, какую версию вы используете;и вы должны также отметить требования к версии для других пакетов, так как это может указывать на изменения API и т.д .;и
  3. Сборка / установка локальной версии.

Но ... в коде (и / или примере кода в документации) могут быть нюансы, которые не будут работать в старыхверсия.И то, что работает для одного пакета, не обязательно будет работать для другого.

Это истинный случай caveat emptor.Риск взлома кода высок.Вероятность выполнения этого ручного процесса для нескольких пакетов высока.Вероятность того, что все это работает с первого раза, мала.

(Конечно, вы всегда можете обратиться к разработчику / сопровождающему, чтобы спросить.)

...