Просто для полноты, есть несколько способов предотвратить возникновение этой проблемы. Как сказал Дирк, сохраните ваши пакеты в другом каталоге на вашем компьютере.
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. Но этот код легко расширяем, чтобы включить и те.