Просто для повноти існують кілька способів запобігти вам виникнення цієї проблеми. Як сказав Дірк, збережіть ваші пакунки в іншому каталозі на комп’ютері.
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. Але цей код легко розширити, щоб включити і ці.