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