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