Dla pełnego obrazu istnieje kilka sposobów, aby zapobiec wystąpieniu tego problemu. Jak powiedział Dirk, zapisz swoje pakiety w innym katalogu na swoim komputerze.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
Można zmienić domyślne .Library
wartości używając funkcji .libPaths
zbyt
.libPaths("/path/to/directory/with/libraries")
Spowoduje to umieszczenie tej ścieżki jako pierwszej wartości w .Library
zmiennej i uczyni ją domyślną.
Jeśli chcesz zautomatyzować to dalej, możesz to określić w pliku Rprofile.site, który znajdziesz w katalogu / etc / twojej kompilacji R. Następnie ładuje się automatycznie za każdym razem, gdy ładuje się R i nie musisz się już o to martwić. Możesz po prostu zainstalować i załadować pakiety z określonego katalogu.
Na koniec mam mały kod zawarty w moim Rprofile.site, który pozwala mi ponownie zainstalować wszystkie pakiety, kiedy instaluję nową wersję R. Wystarczy je wymienić, zanim zaktualizujesz do nowej wersji R. Robię to używając pliku .RData zawierającego zaktualizowaną listę wszystkich pakietów.
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])
}
Tworzę packagelist.RData, podając .Last()
w moim Rprofile.site. To aktualizuje listę pakietów, jeśli zainstalowałem kilka:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
Kiedy instaluję nową wersję R, po prostu dodaję niezbędne elementy do pliku Rprofile.site i ponownie instaluję wszystkie pakiety. I tak muszę dostosować Rprofile.site (używając kontrastów sum, dodając dodatkowy kod dla Tinn-R, te rzeczy), więc tak naprawdę nie jest to dodatkowa praca. Instalacja wszystkich pakietów od nowa zajmuje po prostu więcej czasu.
Ten ostatni fragment jest równoważny temu, co podano w pierwotnym pytaniu jako rozwiązanie. Po prostu nie muszę się martwić o to, że najpierw otrzymam listę „zainstalowanych”.
Ponownie, nie działa to bezbłędnie, jeśli masz pakiety, które nie są instalowane z CRAN. Ale ten kod można łatwo rozszerzyć, aby uwzględnić również te.