2017-02-06 5 views
1

Иногда, вы попали на проблемы в GNU R, где Hadley Викхи recommends:Установите все пакеты GNU R

Я бы рекомендовал повторно установить все пакеты.

Вопрос в том, как это сделать наилучшим образом. Я знаю, что install.packages будет overwrite existing versions.

При использовании только CRAN пакетов (ничего особенного из GitHub или других источников), этот наивный подход не работает для меня:

my.packages <- rownames(installed.packages()); install.packages(my.packages);

Но что я могу сделать, если у меня есть installed dev versions from GitHub, например, или использовать некоторые локальные пакеты, которые не являются общедоступными?

Я ищу способ

  1. Проверьте, какие изменения в пакеты в результате новой установки (обновления/понижение)

  2. Установите пакеты снова из того же источника

  3. Резервное копирование папки с моими старыми пакетами

Есть ли сценарий, который может удовлетворить эти требования?

+0

Вы используете RStudio? Если это так, вы всегда можете перейти на вкладку «пакеты» и нажать «Обновить», это будет вариант? –

+0

Решение Хэдли заставляет меня хотеть плакать. – thc

+0

Считаете ли вы использование [packrat] (https://rstudio.github.io/packrat/)? – mlegge

ответ

0

(Частичное решение (1) - выяснить, какие пакеты будут обновлены/понижены)

my.packages <- installed.packages(); 
my.avail <- available.packages(); 

z <- merge(
     my.packages[,c("Package","Version")], 
     my.avail[,c("Package","Version")], 
     by = "Package", suffixes = c('.my','.avail')); 

z$Version.my <- as.character(z$Version.my) 
z$Version.avail <- as.character(z$Version.avail) 

# my packages which will be upgraded 
subset(z, Version.my < Version.avail) 

# my packages that will be downgraded 
subset(z, Version.my > Version.avail) 

Это лишь приблизительные, я думаю, - в зависимости от зависимостей вы не можете получить все обновления. Но вы должны видеть, что понижатели ожидаются при использовании версий dev?