Solo per completezza, ci sono alcuni modi per impedirti di avere questo problema. Come ha detto Dirk, salva i tuoi pacchetti in un'altra directory sul tuo computer.
install.packages("thepackage",lib="/path/to/directory/with/libraries")
È possibile modificare il valore predefinito .Library
valore utilizzando la funzione di .libPaths
troppo
.libPaths("/path/to/directory/with/libraries")
Questo metterà questo percorso come primo valore nella .Library
variabile e lo renderà predefinito.
Se vuoi automatizzarlo ulteriormente, puoi specificarlo nel file Rprofile.site, che trovi nella directory / etc / della tua build R. Quindi si caricherà automaticamente ogni volta che si carica R, e non dovrai più preoccupartene. Puoi semplicemente installare e caricare i pacchetti dalla directory specificata.
Infine, ho incluso un piccolo codice nel mio Rprofile.site che mi consente di reinstallare tutti i pacchetti quando installo una nuova versione R. Devi solo elencarli prima di aggiornare alla nuova versione R. Lo faccio usando un file .RData contenente un elenco aggiornato con tutti i pacchetti.
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])
}
Faccio il .Last()
packagelist.RData specificando nel mio Rprofile.site. Questo aggiorna l'elenco dei pacchetti se ne ho installati alcuni:
.Last <- function(){
pkgs <- installed.packages()[,1]
if (length(pkgs) > length(installed)){
save(pkgs,file="G:\Setinfo\R\packagelist.RData")
}
}
Quando installo una nuova versione R, aggiungo solo gli elementi necessari al file Rprofile.site e tutti i pacchetti vengono reinstallati. Devo comunque adattare Rprofile.site (usando i contrasti di somma, aggiungendo il codice extra per Tinn-R, queste cose), quindi non è davvero un lavoro extra. Ci vuole solo del tempo extra per installare tutti i pacchetti di nuovo.
Quest'ultimo bit equivale a ciò che viene fornito nella domanda originale come soluzione. Non devo preoccuparmi di ottenere prima l'elenco "installato".
Ancora una volta, questo non funziona perfettamente se hai pacchetti che non sono installati da CRAN. Ma questo codice è facilmente estendibile per includere anche quelli.