Visualizzazione post con etichetta CRAN. Mostra tutti i post
Visualizzazione post con etichetta CRAN. Mostra tutti i post

domenica 1 settembre 2024

Lista e aggiornamento dei pacchetti aggiuntivi

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 e 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;
 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 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 vogliono aggiungere all'installazione preesistente su un altro PC i pacchetti impiegati nell'installazione corrente.

Precisato che 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 dal menù di R (Pacchetti >> Aggiorna pacchetti...), nel caso di una aggiornamento maggiore ci sono tre opzioni:
 fare coesistere diverse versioni di R e delle relative librerie (ma sono possibili problemi);
 disinstallare la versione corrente di R e installarne una nuova senza mettere mano alle librerie (ma anche se queste poi vengono poi aggiornate seguendo le indicazioni che si trovano online 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 e reinstallarle tutte daccapo.

In quest'ultimo caso, che personalmente impiego e che mi sento di consigliare in quanto mette sicuramente al riparo da qualsiasi problema, il primo passo è leggere il file C:\Rdati\pacchetti.csv che contiene i pacchetti dell'installazione originaria (O) che era installata sul PC, che è stata disinstallata e 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) e che, quando 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):

# 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 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. Il processo richiede un po' di tempo, serve un po' di pazienza, consiglio di non fare nulla fino alla conferma dell'avvenuto completamento della procedura.

Al termine è possibile verificare che tutto sia andato a buon fine 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 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

sabato 15 dicembre 2018

Il programma e l'interprete di comandi

R è un ambiente di sviluppo che impiega il linguaggio R, un linguaggio di programmazione ad oggetti orientato alla soluzione di problemi di analisi statistica e di rappresentazione grafica dei dati.

Si tratta di un linguaggio interpretato cioè nel quale le istruzioni in linguaggio R fornite dall'utilizzatore sono lette riga per riga da un Interprete di comandi che si incarica di trasformarle in linguaggio macchina e di farle eseguire.

Cuore dell'ambiente di sviluppo è il programma R (d'ora in poi semplicemente R) che:
→ mette a disposizione una serie di funzioni statistiche e grafiche di base che possono essere integrate e ampliate con le funzioni contenute in migliaia di pacchetti aggiuntivi, che offrono soluzioni di analisi statistica e rappresentazione grafica per (praticamente) qualsiasi problema;
→ consente di sviluppare nuovi script (impiegando le funzioni già sviluppate e contenute nell'installazione base e nei pacchetti aggiuntivi) e nuove funzioni (impiegando il linguaggio di programmazione R) per realizzare le elaborazioni statistiche e grafiche desiderate;
→ contiene l'Interprete di comandi necessario per eseguire le istruzioni in linguaggio R fornite dall'utilizzatore.

Per effettuare il download di R collegatevi alla pagina del sito ufficiale facendo click sul link [1] a fondo pagina o digitando semplicemente R per ricercarla su Google, quindi:
fate click su CRAN o su download R oppure su CRAN mirror (è indifferente);


→ selezionate il server del CRAN (Comprehensive R Archive Network) dal quale fare il download;
→ selezionate la versione di R da installare (per Linux, per MacOS, per Windows);
→ al termine del download eseguite la procedura di installazione conformemente al vostro sistema operativo.

Per gli approfondimenti sulle procedure di installazione potete consultare il manuale R Installation and Administration in versione .pdf [2] o in versione html [3].

Quando avviate il programma vi appare l'interfaccia grafica di R con in alto la classica Barra dei menù.

L'interfaccia grafica o GUI (Graphical User Interface) di R (RGui) è limitata alla gestione delle operazioni più generali con i menù File, Modifica, Visualizza, Varie, Pacchetti, Finestre, Aiuto e presenta in una finestra separata la Console di R [4].


La
Console di R è una semplice interfaccia a carattere o CUI (Character User Interface) che fornisce l'Interprete di comandi e nella quale le istruzioni per effettuare le elaborazioni statistiche e grafiche dei dati sono inserite digitandole a mano lettera per lettera, parola per parola e riga per riga. Questo processo, che garantisce il massimo di flessibilità, in quanto consente di eseguire qualsiasi cosa (purché abbia un senso in R), è peraltro assai dispendioso quando le elaborazioni si fanno complesse.

Per elaborazioni complesse e ripetitive, cioè nella maggior parte dei casi, ci si serve degli script, cioè di blocchi di linee di codice Rscritti allo scopo di effettuare specifiche elaborazioni statistiche e grafiche, che vengono salvati sotto forma di file di testo che al bisogno vengono copiati e incollati nella Console di R, dove sono letti ed eseguiti.

Il simbolo > nella Console di R è il prompt: indica che attende che venga scritto qualcosa sulla tastiera per eseguire quello che viene scritto, ovvero che venga inserito uno script, per eseguire il codice contenuto nello script.

Per chi affronta R per la prima volta esempi iniziali molto semplici sono riportati nel post Eseguire uno script e nel post Pacchetti aggiuntivi di statistica e grafica.

Nota bene: in R il separatore delle cifre decimali è il punto (.) e come già riportato altrove questa convenzione per ragioni di omogeneità viene adottata non solo negli script ma anche nei dati e in tutto il testo.


----------

[1] The R Project for Statistical Computing.
https://www.r-project.org/

[2] R Core Team. R Installation and Administration.
https://cran.r-project.org/doc/manuals/r-patched/R-admin.pdf

[3] R Core Team. R Installation and Administration.
https://cran.r-project.org/doc/manuals/r-release/R-admin.html

[4] Le indicazioni e l'iconografia riportate in questo blog fanno riferimento alla versione di R per Windows.

giovedì 29 novembre 2018

Pacchetti aggiuntivi di statistica e grafica

Il programma R che si scarica e si installa sul proprio PC o notebook da sito ufficiale di R [1] include una serie di funzioni statistiche e grafiche di base, che tuttavia possono essere integrate da una miriade di funzioni statistiche e grafiche contenute nei pacchetti aggiuntivi disponibili, ciascuno orientato alla risoluzione di un problema specifico.

Per scaricare un pacchetto aggiuntivo e installarlo sul vostro PC o notebook:
selezionare dalla RGui l'opzione Pacchetti
selezionare dal menù a tendina che compare Installa pacchetti...

Si aprirà prima una finestra per selezionare nel CRAN (Comprehensive R Archive Network) il sito dal quale scaricare il pacchetto, per l'Italia potete selezionare Italy (Milano) o Italy (Padua), entrambi siti https.


Una volta selezionato il sito si aprirà una finestra con l’elenco dei pacchetti disponibili. Selezionate il pacchetto e premete OK per installarlo.

Quando si installa un pacchetto è possibile che questo richieda che sul PC o notebook siano installati altri pacchetti, cui esso si appoggia. Se questi non sono installati verrà effettuato automaticamente il download e l’installazione di più pacchetti, tutti quelli tra loro concatenati e quindi necessariamente e contemporaneamente richiesti per garantire la funzionalità dell’unico pacchetto che si desiderava installare. Ora scaricate e installate il pacchetto DAAG che ci serve tra poco (vedere il post il set di dati ais).

In R un "pacchetto" è una raccolta di funzioni, di set di dati e di codice R compilato. Quando si scarica e si installa un pacchetto, questo viene immagazzinato nella locale libreria. Ecco perché se nella Console di R digitate

library

potete vedere l'elenco dei pacchetti che avete installato e che sono disponibili in R sul vostro PC o notebook.

Per utilizzare le funzioni e i set di dati contenuti in un pacchetto è necessario caricarlo come segue:
dalla RGui fare click su Pacchetti;
selezionare Carica pacchetto...;
→ nella finestra che compare selezionare il pacchetto da caricare.


In alternativa è possibile, ed è più pratico, caricare i pacchetti impiegando all'interno degli script la funzione library() o la funzione require() e riportando come argomento all'interno della parentesi () il nome del pacchetto.

Una volta caricato un pacchetto è possibile avere l'elenco di tutti i set di dati che sono stati caricati con quel pacchetto, e digitando nella Console di R il nome di uno di questi set di dati poterne vederne il contenuto:

library(DAAG) # carica il pacchetto DAAG
data(package="DAAG") # elenca i set di dati caricati con il pacchetto DAAG
ais # mostra il contenuto del set di dati ais

Mediante la funzione data() possono essere caricati set di dati senza caricare il pacchetto che li contiene, così ad esempio è possibile caricare selettivamente il set di dati ais senza caricare il pacchetto DAAG digitando nella Console di R

data(ais, package="DAAG")

Digitando nella Console di R

help(package="DAAG")

si accede alla documentazione delle funzioni e dei set di dati contenuti nel pacchetto.

Per scaricare il manuale di riferimento in formato .pdf di un pacchetto:
→ accedere al CRAN;
fare click sulla voce Packages nella sezione Software;
fare click sul link Table of available packages, sorted by name;
→ fare click sul nome del pacchetto;
il manuale si trova alla voce Reference manual.

Per aggiornare periodicamente i pacchetti installati:
dalla RGui selezionare l'opzione Pacchetti;
dal menù a tendina che compare selezionare Aggiorna pacchetti...

I pacchetti non più manutenuti vengono rimossi dal CRAN, ma sono ancora resi disponibili nell'archivio storico di R.
https://cran.r-project.org/src/contrib/Archive/

----------

[1] The R Project for Statistical Computing.
https://www.r-project.org/

mercoledì 28 novembre 2018

Importazione dei dati da un file .xls o .xlsx

Il formato dati raccomandato di R è il formato .csv e consente prima dell'importazione una ispezione preliminare dei dati, che sono accessibili in chiaro, semplicemente aprendo il file .csv con un editor di testo.

I formati .xls e .xlsx sono invece formati binari, nei quali i dati non sono accessibili in chiaro, e non sono formati standardizzati per cui la struttura dei file potrebbe cambiare senza preavviso nelle nuove versioni dei programmi che salvano in questi formati, causando errori imprevedibili e pertanto non gestibili nell’importazione dei dati in R [1]. Nonostante questo, data la larga diffusione dei dati salvati in questi formati, in R si trovano pacchetti che consentono di importare i dati direttamente da file .xls e .xlsx come ad esempio il pacchetto xlsx che si può scaricate dal CRAN (Comprehensive R Archive Network) selezionando nel menù Pacchetti di R l’opzione Installa pacchetti… e quindi selezionando xlsx dall’elenco dei pacchetti disponibili.

Per la documentazione completa del pacchetto xlsx vedere il suo manuale di riferimento [2]. Se nel menù Aiuto di R selezionate Guida Html nella sezione Reference alla voce Packages trovate la documentazione dei pacchetti che avete installato sul vostro PC o notebook e che include, però in una versione meno completa, la documentazione del pacchetto xlsx.

Potete anche digitare help(read.xlsx) nella Console di R per una documentazione concisa ed essenziale della funzione read.xlsx().

Per proseguire ora è necessario:
effettuare il download del file importa_xls.xls
effettuare il download del file importa_xlsx.xlsx
salvare i file nella cartella C:\Rdati\

Per questo e gli altri file di dati impiegati nei post trovate link e modalità di download alla pagina Dati.

Copiate e incollate nella Console di R questo script e premete ↵ Invio:

# IMPORTA I DATI DI UN FILE XLS
#
# carica il pacchetto xlsx
require(xlsx)
# carica nell'oggetto mydata i dati del file e del foglio specificati, notare / invece di \ su windows
mydata <- read.xlsx("C:/Rdati/importa_xls.xls", sheetName="peso_altezza")
#

La funzione require() carica in R il pacchetto xlsx contenente la funzione read.xlsx() che permette di importare i dati.

Gli unici argomenti richiesti dalla funzione read.xlsx() sono il nome del file con il percorso completo ("C:/Rdati/importa_xls.xls") e il nome del foglio che contiene i dati (sheetName="peso_altezza") all’interno del file. Quest'ultimo argomento è cruciale in quanto permette di gestire i molteplici fogli che possono essere presenti all'interno di un unico file .xls o xlsx.

Se ora digitate mydata e premete ↵ Invio potete scorrere nella Console di R i dati che sono stati importati:

> mydata
  id sesso anni peso_kg altezza_m
1 MT     M   69      76      1.78
2 GF     F   56      63        NA
3 MC     F   53      71      1.60
4 SB     M   28      73      1.78
5 FE     F   61      54      1.54
6 AB     M   46      92      1.84
7 RF     F   31      81      1.56

Per avere la conferma del fatto che i dati sono stati importati correttamente confrontateli con l’originale aprendo il file con Excel o in alternativa con un programma appartenente alla categoria del software libero [3] come OpenOffice calc o LibreOffice calcLa sola differenza che riscontrerete risiederà nel separatore dei decimali, che nel foglio elettronico vedrete essere (nella configurazione italiana di Windows) la virgola (,) mentre nei dati importati trovate il punto (.) che è il separatore delle cifre decimali impiegato da R.

Notare che R assegna automaticamente un identificativo univoco numerico (1, 2, eccetera) ai casi/righe.

Per importare un file .xlsx copiate e incollate nella Console di R questo script e premete ↵ Invio:

# IMPORTA I DATI DI UN FILE XLSX
#
# carica il pacchetto xlsx
require(xlsx)
# carica nell'oggetto mydata i dati del file e del foglio specificati, notare / invece di \ su windows
mydata <- read.xlsx("C:/Rdati/importa_xlsx.xlsx", sheetName="peso_altezza", row.names="id")
#

Questa volta l'argomento row.names="id" specifica che gli identificativi univoci dei casi sono contenuti nel campo id del file. Se ora digitate mydata e premete ↵ Invio potete scorrere nella Console di R i dati che sono stati importati

> mydata
   sesso anni peso_kg altezza_m
MT     M   69      76      1.78
GF     F   56      63        NA
MC     F   53      71      1.60
SB     M   28      73      1.78
FE     F   61      54      1.54
AB     M   46      92      1.84
RF     F   31      81      1.56

nei quali l'identificativo univoco numerico di R non compare più, essendo stato sostituito da quello già presente nei dati importati.


Importare in R file .xls e .xlsx salvati con un foglio elettronico è quindi semplice. Tuttavia si ricorda che qualsiasi foglio elettronico è in grado di salvare i dati anche in formato .csv e che è questo il formato raccomandato da R (vedere  il post Importazione dei dati da un file .csv).


----------

[1] Il manuale ufficiale R Data Import/Export a pag. 29 così recita: "The most common R data import/export question seems to be ‘how do I read an Excel spreadsheet’ ... The first piece of advice is to avoid doing so if possible!".
https://cran.r-project.org/doc/manuals/r-release/R-data.pdf

[2] xlsx: Read, Write, Format Excel 2007 and Excel 97/2000/XP/2003 Files.
https://cran.r-project.org/web/packages/xlsx/index.html

[3] Per il significato di Software libero, di Software open source e di Software di dominio pubblico vedere: The Free Software Foundation. GNU Operating System. Categories of free and nonfree software.
https://www.gnu.org/philosophy/categories.en.html