Dal Menù dell'interfaccia grafica di R (RGui) alla voce Pacchetti selezionando Carica pacchetto... compare l'elenco dei pacchetti installati – sia i pacchetti previsti di default nella installazione base di R sia i pacchetti aggiuntivi installati dall'utente – che con l'opzione Aggiorna pacchetti... possono (e devono) essere periodicamente aggiornati.
Uno script che genera l'elenco dei pacchetti installati sembrerebbe quindi superfluo, ma voglio dimostrare che non è esattamente così.
Ora copiate e incollate nella Console di R questo script e premete ↵ Invio.
# GENERA LA LISTA DEI PACCHETTI DELL'INSTALLAZIONE ORIGINARIA
#
pacchetti <- as.data.frame(installed.packages()[,c(1:3)], row.names=FALSE) # genera la lista
pacchetti # mostra la lista
write.csv(pacchetti, "C:/Rdati/pacchetti.csv") # salva la lista
#
La prima riga di codice genera la lista di tutti i pacchetti installati e ne salva nella tabella pacchetti i primi tre campi [,c(1:3)] che sono il nome del pacchetto (Package), la sua ubicazione nel PC (LibPath), e la versione installata (Version), mentre la seconda riga mostra la lista nella Console di R.
> pacchetti # mostra la lista
Package LibPath Version
1 abind C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
2 askpass C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
3 backports C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
4 base64enc C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
5 BayesFactor C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
6 bayestestR C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
7 BiasedUrn C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
8 bitops C:/Users/xxxxx/AppData/Local/R/win-library/x.x x.x.x
..........
272 splines C:/Program Files/R/R-x.x.x/library x.x.x
273 stats C:/Program Files/R/R-x.x.x/library x.x.x
274 stats4 C:/Program Files/R/R-x.x.x/library x.x.x
275 survival C:/Program Files/R/R-x.x.x/library x.x.x
276 tcltk C:/Program Files/R/R-x.x.x/library x.x.x
277 tools C:/Program Files/R/R-x.x.x/library x.x.x
278 translations C:/Program Files/R/R-x.x.x/library x.x.x
279 utils C:/Program Files/R/R-x.x.x/library x.x.x
Tre precisazioni:
→ se dal codice togliete [,c(1:3)] la lista generata comprenderà tutti i campi previsti nelle specifiche dei pacchetti;
→ i pacchetti ubicati in C:/Program Files/R/R-x.x.x/library (dove x.x.x è la versione di R) sono quelli previsti di default nella installazione base di R;
→ quelli ubicati in C:/Users/xxxxx/AppData/Local/R/win-library/x.x (dove xxxxx è il nome dell'utente e x.x la versione di R) sono i pacchetti aggiuntivi installati dall'utente.
La terza riga di codice dello script salva la lista nel file C:\Rdati\pacchetti.csv (da notare che \ è la barra rovesciata o backslash impiegata da Windows come separatore tra i nomi delle directory nel percorso di un file, mentre R impiega la barra obliqua o slash).
Ed è qui che la cosa si fa interessante, perché disporre di un file con i nomi dei pacchetti installati consente di riprodurre una installazione dei pacchetti aggiuntivi identica a quella corrente:
→ quando si installa un aggiornamento maggiore di R a una nuova versione, indicato da un cambiamento nella prima e/o nella seconda cifra della versione (i.e.: X.X.x oppure x.X.x);
→ quando si installa R ex novo su un altro PC;
→ quando si vogliono aggiungere all'installazione preesistente su un altro PC i pacchetti impiegati nell'installazione corrente.
Mentre quando cambia solamente la terza cifra del numero della versione (i.e.: x.x.X) questo viene considerata un aggiornamento minore ed è sufficiente disinstallare la versione corrente, installare la nuova versione, ed effettuare l'aggiornamento dei pacchetti (Pacchetti >> Aggiorna pacchetti...), nel caso di una aggiornamento maggiore ci sono tre opzioni:
→ fare coesistere diverse versioni di R e delle relative librerie (cosa che può comportare problemi);
→ disinstallare la versione corrente di R e installarne una nuova senza modificare le librerie (queste poi devono essere aggiornate seguendo le indicazioni che si trovano online, ma anche in questo caso si può andare incontro a problemi);
→ procedere ogni volta con una installazione pulita di R, che prevede di disinstallare la versione corrente di R, di cestinare tutte le librerie eliminando C:/Users/xxxxx/AppData/Local/R/win-library/x.x e reinstallarle tutte daccapo (opzione consigliata).
Installazione pulita di R
In questo caso, che mette sicuramente al riparo da qualsiasi problema, il primo passo prevede di:
→ generare la lista dei pacchetti dell'installazione originaria e salvarla impiegando la script riportato sopra;
→ disinstallare R;
→ rimuovere C:/Users/xxxxx/AppData/Local/R/win-library/x.x dove xxxxx è il nome dell'utente e x.x è la versione di R appena disinstallata, eliminando così tutte le librerie;
→ installare la nuova versione di R con le opzioni di default.
Il secondo passo prevede di leggere il file che contiene i pacchetti dell'installazione originaria (O) che si intende replicare e che al passo precedente avete salvato come C:/Rdati/pacchetti.csv:
# IMPORTA LA LISTA DEI PACCHETTI DELL'INSTALLAZIONE ORIGINARIA (O)
#
pacchetti_O <- read.csv("C:/Rdati/pacchetti.csv")[c(-1)] # legge la lista
pacchetti_O # mostra la lista
#
Il terzo passo consiste nel generare la lista dei pacchetti installati localmente (L) e che, con la installazione pulita di R, comprenderà solamente i pacchetti installati di default in C:/Program Files/R/R-x.x.x/library (dove x.x.x è la versione di R):
# GENERA LA LISTA DEI PACCHETTI INSTALLATI LOCALMENTE (L)
#
pacchetti_L <- as.data.frame(installed.packages()[,c(1:3)], row.names=FALSE) # genera la lista
pacchetti_L # mostra la lista
#
Il quarto passo è generare la lista dei pacchetti aggiuntivi mancanti da installare (M) come differenza tra quelli dell'installazione originaria e quelli già installati localmente (M = O - L). Questa differenza esclude i pacchetti dell'installazione base di R, per definizione già installati localmente, e lascia nella lista solamente i pacchetti aggiuntivi della precedente installazione:
# GENERA LA LISTA DEI PACCHETTI AGGIUNTIVI MANCANTI DA INSTALLARE (M = O - L)
#
pacchetti_M <- setdiff(pacchetti_O$Package, pacchetti_L$Package) # genera la lista
pacchetti_M # mostra la lista
#
Il quinto e ultimo passo consiste nell'installazione dei pacchetti aggiuntivi mancanti (M) che verranno quindi aggiunti a quelli installati di default:
# INSTALLA I PACCHETTI AGGIUNTIVI MANCANTI (M)
#
install.packages(pacchetti_M) # installa i pacchetti mancanti
#
A questo punto confermare con SI le specifiche di configurazione proposte,
quindi selezionare il CRAN preferito, dal quale effettuare il download dei pacchetti (sotto Italy trovate Milano e Padua, io per inveterata abitudine mi collego a Padua che è stato il primo dei due in Italia a implementare la modalità "sicura" https e funziona molto bene, ma ovviamente i due si equivalgono).
Nella Console di R vedrete scorrere il download dei pacchetti e la loro installazione, che include la verifica dell'integrità dei file scaricati. Se i pacchetti aggiuntivi sono molti serve pazienza, attendere il completamento della procedura. Va da sé che i pacchetti installati saranno tutti nella versione più aggiornata.
La procedura qui riportata è stata validata con diverse successive versioni di R per Windows 64 bit, eseguendola più volte su differenti PC con Windows 11 e riproducendo una installazione originaria di oltre 270 pacchetti contenenti oltre 12 000 file, senza alcun problema.
----------
Codice opportunamente modificato e adattato da un post di Roberto Chiosa:
https://robertochiosa.medium.com/import-export-r-packages-a6a122005e00
Nessun commento:
Posta un commento