Как установить пакет R на R-3.3.0 из GitHub, который построен на R-3.4.0?

У нас есть R-3.3.0 в компьютерной системе нашего университета. По какой-то причине ИТ-специалисты не хотят обновлять версию R до R-3.4.0 в ближайшее время. Однако мне нужно установить пакет R из GitHub, который построен на R-3.4.0. Есть ли способ установить этот пакет R с GitHub на R-3.3.0?

2 ответа

Решение

Вы можете найти файл описания для OPWeight здесь.

Изменить эту часть

Зависит от: R (>= 3.4.0),

к тому, что вы используете R, и посмотрите, что все сломается. Логика файла описания объясняется здесь. Очевидно, в крайнем случае.

Ответ @ Патрика может работать просто отлично. Преимущество (если оно работает) заключается в том, что у вас есть все последние изменения и функциональность пакета. Однако вы можете никогда не узнать, касается ли одно из изменений, требующих 3.4, точности или правильности, то есть вы все равно можете получить возвращаемое значение, но вы не обязательно знаете, что оно верное.

Для этого ответа я собираюсь предположить, что есть веская причина, чтобы не использовать текущую версию и обмануть R в ее установке в любом случае.

Получить от конкретного коммита

  1. В этом случае перейдите на репозиторий https://github.com/mshasan/OPWeight.

  2. Открой DESCRIPTION файл и нажмите на кнопку "Обвинение" справа. Это вызывает заголовок сообщения о фиксации и таймфрейм для каждой группы строк с их самой последней фиксацией. В этом случае отображается "ОПИСАНИЕ ОБНОВЛЕНИЯ":

    введите описание изображения здесь

  3. Нажмите на описание, и вы попадете на конкретный коммит. Видя, что это однострочное изменение, вероятно, что более ранняя фиксация могла быть тем, что фактически изменило код для использования R (>= 3.4.0) жесткое требование. Обратите внимание на хеш коммита (5c0a43c в этом случае).

  4. Вернитесь на главную страницу репо и нажмите "Коммиты". Если вы теперь ищете эту 7-символьную хеш-подстроку, вы увидите, что это произошло 20 июня 2017 года. К сожалению, описания фиксации и временная шкала не дают большого ожидания того, где произошло изменение в зависимости от версии.

  5. Если вы можете найти "коммит", который это сделал, то возьмите эту хеш-подстроку и используйте ее как свой ref="..." аргумент install_github, Если нет, однако, вы либо застряли (1) пробовать их итеративно или случайно, либо (2) спрашивать автора, с какого коммита они начали использовать код, специфичный для 3.4.

После того, как вы узнаете ссылку на использование (или хотите попробовать), запустите

devtools::install_github("mshasen/OPWeight", ref="5c0a43c")

(Это, очевидно, неправильный реф для использования, поскольку это первый коммит, при котором мы уверены, что зависимость существует.)

Использование тестов, чтобы знать, что использовать

Поскольку репо содержит tests/ subdir, можно надеяться / предполагать, что тесты точно поймают, если что-то не работает в вашем R-3.3. Этот альтернативный метод включает в себя тестирование каждого коммита на вашей конкретной версии R (до DESCRIPTION файл был изменен), пока тесты больше не пройдут.

С помощью git (командная строка или графический интерфейс), клонировать репо на локальный компьютер.

$ git glone https://github.com/mshasan/OPWeight

Теперь итерации по ссылкам (найдены с использованием вышеуказанного метода или, возможно, с git log) с чем-то вроде:

$ git checkout --detach <hash_substring>

... а в R беги

devtools::test("path/to/your/copy/of/OPWeight")

Если тесты были настроены правильно и вы выбрали достойную версию, то придерживайтесь ее.

Другие вопросы по тегам