Хороший рабочий процесс для обновления модулей R вокруг обновлений R-Cran?

Мне нравится, что R часто обновляется, чтобы дать мне лучшие новые пакеты, но, похоже, это создает проблему для моих R-скриптов в расписаниях cron.

Я заметил, что каждый раз, когда Ubuntu Updater обновляет мой пакет r-base, когда я пытаюсь запустить свои скрипты, он говорит что-то вроде «there is no library(XML)».

Затем я должен пойти «update.packages("XML")», чтобы получить новую версию этого пакета, которая совместима с моей новой версией R.

У меня установлено много пакетов, поэтому я довольно регулярно отслеживаю их и выполняю длинные команды, такие как «update.packages(c("XML", "ggplot2", "timeseries"))».

Когда я забываю сделать это после обновления, все мои скрипты R cron перестают работать.

Есть ли у кого-нибудь хороший рабочий процесс для автоматической проверки пакетов, которые я уже установил, и обновления их при необходимости обновления?

3
задан 4 April 2012 в 00:37

1 ответ

Вы можете добавить вызов install.packages() в ваш скрипт cron, чтобы он устанавливал все текущие пакеты до того, как запустит остальные ваши задания R cron.

install.packages берет вектор, так что вы можете даже сохранить файл с пакетами, которые вы хотите установить в другом месте, а затем автоматически загрузить его в ваш скрипт обновления cron.

installed.packages() возвращает вектор уже установленных пакетов, поэтому вы можете использовать %in%, чтобы просто вызывать его для пакетов, которые еще не установлены:

desired.packages <- c("plyr","taRifx","ggplot2")
missing.packages <- ! desired.packages %in% installed.packages()[,1]
if( any(missing.packages) ) { 
   install.packages( desired.packages[missing.packages] )
}

Редактировать: Возможно, лучшее решение

Согласно предложению @ JoshuaUlrich в чате :

Поместите это в свой .Rprofile.

local({
  .libPaths("/home/evilgenius/R/library")
})

Тогда вы сможете запустить update.packages() после того, как Ubuntu уничтожит все, и монархия будет восстановлена.

Это решение требует большей осторожности, чтобы пакеты, которые не работают с текущей версией R, не переносились.

0
ответ дан 4 April 2012 в 00:37

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

Похожие вопросы: