Только для полноты есть несколько способов предотвратить возникновение этой проблемы. Как сказал Дирк, сохраните свои пакеты в другом каталоге на вашем компьютере.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
Вы можете изменить значение по умолчанию .Library
с помощью функции .libPaths
слишком
.libPaths("/path/to/directory/with/libraries")
Это поставит этот путь в качестве первого значения в переменной .Library
, и будет делать это по умолчанию.
Если вы хотите автоматизировать это дальше, вы можете указать это в файле Rprofile.site, который вы найдете в каталоге/etc/вашей сборки R. Затем он будет загружаться автоматически каждый раз, когда R загружается, и вам больше не нужно об этом беспокоиться. Вы можете просто установить и загрузить пакеты из указанного каталога.
Наконец, у меня есть небольшой код, включенный в мой Rprofile.site, позволяющий мне переустановить все пакеты при установке новой версии R. Вам просто нужно перечислить их до до, вы обновляетесь до новой версии R. Я делаю это с использованием файла .RData, содержащего обновленный список со всеми пакетами.
library(utils)
## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
install.packages(pkgs[!installed])
}
Я делаю packagelist.RData, указав .Last()
в моей Rprofile.site. Это обновляет список пакетов, если я установил некоторые из них:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
Когда я устанавливаю новую версию R, я просто добавить необходимые элементы в Rprofile.site файл и все пакеты переустанавливать. Мне нужно настроить Rprofile.site в любом случае (используя контрасты суммы, добавляя дополнительный код для Tinn-R, эти вещи), поэтому это не лишняя работа. Просто требуется дополнительное время для установки всех пакетов заново.
Этот последний бит эквивалентен тому, что задано в исходном вопросе как решение. Мне просто не нужно беспокоиться о том, чтобы сначала получить «установленный» список.
Опять же, это не работает безупречно, если у вас есть пакеты, которые не установлены из CRAN. Но этот код легко расширяется, чтобы включить их.
Edit: Был отсутствует скобка в коде
Насколько актуальным является решение, которое использовалось здесь? – maj
Я использовал его недавно и отлично работает. – Litwos
https://stackoverflow.com/questions/13656699/update-r-using-rstudio – Masoud