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 genera la lista di tutti i pacchetti installati e ne salva in una tabella (pacchetti) i primi tre campi (c(1:3)), quelli che ci interessano che sono il nome del pacchetto (Package), la sua ubicazione nel PC (LibPath), e la versione installata (Version) e 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 (la trovate poi nel file salvato, mentre nella Console di R la lista potrebbe essere variamente troncata a causa delle sue grandi dimensioni);
→ i pacchetti salvati 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 salvati 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.
Con la terza riga di codice la lista è salvata 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 comporta un notevole vantaggio, consentendoci 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 vuole integrare rapidamente l'installazione su un altro PC con i pacchetti impiegati nell'installazione corrente.
Nel secondo e nel terzo caso il vantaggio è ovvio. Nel primo caso dipende invece dalle scelte dell'utente in quanto:
→ quando cambia solamente la terza cifra del numero della versione (i.e.: x.x.X) questo viene considerata un aggiornamento minore ed è in linea di principio sufficiente disinstallare la versione corrente, installare la nuova versione, ed effettuare l'aggiornamento dei pacchetti, che vengono correttamente riconosciuti dalla nuova versione;
→ se si vuole mantenere la coesistenza di diverse versioni di R e delle relative librerie, oppure se si vuole disinstallare la versione corrente di R e installarne una nuova senza mettere mano alle librerie, è opportuno ricorrere alle indicazioni fornite online per queste soluzioni (indicazioni che però non mi hanno mai completamente soddisfatto);
→ se si preferisce (come il sottoscritto) procedere ogni volta con una installazione pulita di R – che prevede di disinstallare la versione corrente di R e di fare piazza pulita delle relative librerie (in media per una cinquantina di pacchetti aggiuntivi di una installazione parliamo di una almeno un decina di migliaia di file) – automatizzare la reinstallazione dei pacchetti è di fondamentale importanza.
In quest'ultimo caso per procedere con ordine, il primo passo è – dopo avere copiato la cartella C:\Rdati\ se si tratta di una installazione su un nuovo PC – leggere il file C:\Rdati\pacchetti.csv che contiene i pacchetti dell'installazione originaria (O) che si intende replicare:
# 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 secondo passo è generare la lista dei pacchetti installati localmente (L). La lista, se si parte con una 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), altrimenti comprenderà anche eventuali pacchetti aggiuntivi già installati:
# 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 terzo 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). Va da sé che questa differenza esclude i pacchetti dell'installazione base di R, per definizione già installati localmente, e lascia nella lista solamente pacchetti aggiuntivi:
# 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 quarto e ultimo passo è l'installazione dei pacchetti aggiuntivi mancanti (M):
# INSTALLA I PACCHETTI AGGIUNTIVI MANCANTI (M)
#
install.packages(pacchetti_M) # installa i pacchetti mancanti
#
A questo punto confermate con SI le specifiche di configurazione proposte,
quindi selezionate il vostro 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 ora i due si equivalgono).
Nella Console di R vedete scorrere il download dei pacchetti e la loro installazione che include la verifica dell'integrità dei file scaricati. Il processo richiede un po' di tempo, abbiate pazienza e non fate nulla fino alla conferma dell'avvenuto completamento della procedura.
Al termine se proprio volete potete verificare che tutto sia andato a buon fine anche eseguendo degli script che richiedono qualcuno dei pacchetti appena installati. La procedura qui riportata è stata validata con la versione di R per Windows 4.4.1 a 64 bit, eseguendola più volte su differenti PC con Windows 11 e riproducendo una installazione originaria di oltre 270 pacchetti, 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