Является ли хорошей практикой часто обновлять пакеты R?

Я начал использовать R некоторое время назад и не знаю, как часто обновлять установленные пакеты (в это время я использую в основном ggplot2 и rattle). Одной из них является типичный импульс geek, чтобы иметь последнюю версию:-) С другой стороны, обновления могут нарушать функциональность и, как новичок R, я не хочу тратить время на изучение несовместимости пакетов и переустановки библиотек, это почти наверняка Я бы не заметил никакой разницы с улучшенным пакетом.

В других приложениях у меня есть смысл, исходя из опыта, как часто обновлять, сколько ждать между выпуском обновления и установкой и т.д. Но я в неведении относительно R.

И чтобы быть ясным: я не говорю о самом R, но его библиотеках.

Спасибо.

Ответ 1

Вот моя философия: наивный пользователь никогда не обновляется. Усовершенствованный пользователь всегда обновляется. Пользователь питания часто обновляется, но осторожно.

Бездумное обновление не всегда полезно. Ошибки работают в обновленных версиях R-библиотек (или самих R!), И вы можете сломать свой существующий код, обновив его, не читая журнал изменений или историю фиксации. Например, R 2.11 сломал lme4 на OS X... он платит, чтобы тщательно обновлять и запускать демонстрации пакетов между выпусками. Это действительно отстойно обновляться до новой библиотеки или выпуска R и понимать, что что-то сломалось, когда у вас есть крайний срок.

Ответ 2

Да, это так.

Почему именно вы хотите висеть на старых ошибках и отсутствующих функциях?

Ответ 3

Вопрос уже дан, но я предлагаю свои 2 цента. В организации обновление R следует рассматривать как обновление gcc или Java: с предупреждениями, с промежуточной областью, планом отката и т.д. На работу и результаты других могут влиять. [См. Обновление # 2]

Я более импульсивный об обновлении пакетов R. Пока вы можете воспроизвести состояние своей системы в любой момент времени, вам не о чем беспокоиться. Обеспечение того, чтобы выполнялись ночные резервные копии, должно быть доменом вашего системного администратора.

Основная идея заключается в том, что вы должны иметь возможность воспроизводить все. Фактически тестирование, которое воспроизводятся ваши ранние результаты, зависит от того, хотите ли вы опровергнуть свое предположение о том, что нет ошибок или изменений, которые повлияют на последующие результаты.:)


Обновление 1. Как уже упоминалось в комментариях и выше, обновление в рабочей среде или в любой среде, где стабильность является оптимальной (например, ошибки известны или не значительны), вводя новые ошибки, новые зависимости, разные выходные данные или любые множество других программных регрессий, следует делать довольно осторожно. Более того, там, где вы много обновляете. Обновление от R-Forge скорее всего подвергает вас новейшим ошибкам, чем от CRAN. Тем не менее, я нашел и сообщил о ошибках, которые сохранялись через 3+ версии пакета на CRAN, а также другие регрессии, которые только волшебным образом появились. Я много тестирую, но обновление, поиск новых ошибок и отладка - это усилия, которые я не всегда хочу (или успеваю) предпринять.

Мне напомнили об этом вопросе после обнаружения новой ошибки в новой версии пакета, который я использую много. Просто чтобы проверить, я вернулся к более ранней версии - больше никаких сбоев, хотя отслеживание причины заняло пару часов, потому что я предположил, что это не возникает в этом пакете. Я скоро отправлю записку для сопровождающего, поэтому другим не придется спотыкаться на ту же ошибку.

Обновление 2. В организации я должен сказать, что ответ отрицательный. Фактически, в любом случае, когда могут быть два или более одновременных экземпляра R, очень неразумно слепо обновлять пакеты, в то время как другой может их использовать. Вероятно, будут хорошие методы для пакетов с горячей заменой, я их еще не знаю. Имейте в виду, что двум экземплярам нужны только общие библиотеки (например, где хранятся пакеты), и AFAIK не должны запускаться одновременно на одном компьютере. Таким образом, если библиотеки размещены в общих системах, например, над NFS, возможно, неизвестно, где еще работает R в то же время, используя эти библиотеки. Случайное убийство другого процесса R обычно не всегда хорошо.

Ответ 4

Да, если у вас нет веской причины не делать этого (см. мой комментарий к Dirk)

Ответ 5

Хотя в предыдущих ответах упоминалось о некоторых из перечисленных ниже, я думаю, что было бы полезно сделать несколько вещей явным. Как разработчик, я считаю, что обновление пакетов часто (и R-разработка по этому вопросу) является хорошей практикой. Вы определенно хотите придерживаться самого последнего. Если ваш пакет импортирует/зависит/sugests... взаимодействует с другими пакетами, вы хотите обеспечить функциональную совместимость изо дня в день, а не сталкиваться с "ошибками" непосредственно перед выпуском, когда время короткое. С другой стороны, в некоторых средах особое внимание будет уделяться точной воспроизводимости. В этом случае можно захотеть принять более тщательную стратегию с обновлением.

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

Надеюсь, что это поможет.

Ответ 6

Я был бы склонен отвечать так часто, как вам нужно, и никогда, когда вы спешите!

Во-первых, обсудите шансы, что вы работаете под ошибкой, о которой вы не знаете. Я бы решил, что это довольно редко. Если вы страдаете под ошибкой и там есть более новая версия, в которой исправлена ​​ошибка, планируйте обновление. Если вы хотите новую функцию, планируйте обновление. Если это ваш первый день после Рождества и самые большие накладные расходы, это попытка вспомнить, что вы на самом деле делаете в прошлом, то накладные расходы на некоторые новые требования к зависимостям (которые могут включать компоненты системы за пределами R), вероятно, относительно малы, поэтому рассмотрим видя, какие обновления доступны (угадайте, что я сделал сегодня); -)

Золотое правило , вероятно, заключается в том, что нет ни одного рекомендованного графика, кроме того, что имеет смысл для вашего использования; ежедневные обновления неизбежно приводят к меньшему количеству обновлений каждый раз и, таким образом, уменьшают боль фактического обновления, но это не стоит, если вы постоянно получаете разные числовые результаты от одного дня до следующего из-за некоторого изменения того, как функция выполняет выборку (разные численные результаты преследовали студентов Coursera, использующих каретку). Не стоит недооценивать ценность стабильной системы, которая позволяет вам просто работать с продуктивной работой, а не faffing.