Capitolo 1 Introduzione
# Aggiungo una spiegazione passo passo dei comandi che elimierò dopo il capitolo 3
# Installo/carico le librerie
# creo un vettore (invisibile, perché il nome è preceduto dal .)
# con i nomi delle librerie/pacchetti da caricare
.cran_packages <- c("tidyverse", "tictoc", "beepr")
# bisognerebbe aggiungere anche "Rcmdr"
# verifico quali sono installati nel sistema
.inst <- .cran_packages %in% installed.packages()
# installo quelli non presenti nel sistema
if(any(!.inst)) {
install.packages(.cran_packages[!.inst], repos = "https://cloud.r-project.org")
}
# uso un "functional" (sapply()) per caricare i pacchetti nell'ambiente
# di lavoro
sapply(.cran_packages, require, character.only = TRUE)
# altri pacchetti necessari per questo capitolo
.more_packages <- c("Rcmdr")
.inst <- .more_packages %in% installed.packages()
if(any(!.inst)) {
install.packages(.more_packages[!.inst], repos = "https://cloud.r-project.org")
}
sapply(.more_packages, require, character.only = TRUE)1.1 Cosa c’è da imparare in questo capitolo.
Questa è una breve introduzione a R. Ti suggerisco di scorrere velocemente questo capitolo per farti un’idea generale del linguaggio e delle sue potenzialità.
1.2 Convenzioni e guida alla lettura e all’uso del codice.
Quando nel testo compare un blocco in grigio, come quello che segue
> demo(graphics)
si tratta di un comando o di una serie di comandi, e deve essere scritto nella console7 così come appare, senza il carattere >, se presente (questo carattere indica il prompt dei comandi, roba che risale a decine e decine di anni fa…). Quando ometto il carattere > vuol dire che quell’insieme di comandi è pensato per essere eseguito come script (va copiato ed incollato in uno script ed eseguito in gruppo o comando per comando).
<esc> indica che dovete pigiare (o sfiorare, o martellare) il tasto esc sulla vostra tastiera. Lo stesso vale per <cmd>, <ctrl> e simili.
<File -> Open recent> rappresenta una serie di click su menu e, eventualmente sotto menu, generalmente nella barra principale dei menu della GUI8 di R o RStudio.
Un comando del tipo plotrix::fan.plot() indica che il comando (in questo caso fan.plot()) appartiene ad un determinato pacchetto (in questo caso plotrix).
Linee orizzontali delimitano figure o tabelle
I titoli dei paragrafi che costituiscono degli approfondimenti sono in corsivo. Puoi saltarli se non hai tempo o voglia.
1.3 Tutti vogliono imparare a usare R.
Se sei un ricercatore (più o meno in erba) devi per forza aver usato qualche forma di analisi grafica e statistica dei dati che hai prodotto. Nella peggiore delle ipotesi, avrai usato qualcuno dei rudimentali strumenti offerti dalla maggior parte dei software per fogli di calcolo. Nel migliore dei casi, avrai già avuto un’esperienza più o meno estesa con veri software per l’analisi statistica (stand alone o, sempre più frequentemente, basati sul cloud computing).
Tuttavia, se stai leggendo questo libro, stai più o meno seriamente considerando di imparare a usare R. R è, al tempo stesso un linguaggio (nel senso di linguaggio di programmazione), un ambiente, nel senso di ambiente di programmazione e un’applicazione, che puoi scaricare da uno dei siti del CRAN, che sta per Comprehensive R Archive Network9. R è un linguaggio recente: la prima versione stabile appare nel 2000.
R, abbastanza ovviamente, è il linguaggio e l’ambiente per l’analisi statistica e per la scienza dei dati, anche se altri linguaggi, come Python e Julia, possono essere più indicati per alcune applicazioni e, soprattutto, per l’analisi di big data. Ci sono diverse ragioni (4, 5, 6, 8, 10…, prova a cercare “reasons to learn R” con un motore di ricerca) per investire del tempo per imparare a usarlo:
è un software gratuito, libero ed aperto, mantenuto e sviluppato da una grande comunità di statistici e programmatori
è disponibile per diverse piattaforme: è possibile installarlo su sistemi basati su UNIX, MacOS, Windows10. Le più recenti piattaforme per notebook (come Jupyter o Google CoLab) offrono la possibilità di inserire kernel di calcolo con R11.
è il software statistico più ricco di funzionalità: fra l’applicazione base, scaricabile dal CRAN e le migliaia di librerie (o pacchetti, o packages12). Questo enorme lavoro collettivo, fra i pacchetti scaricabili dal CRAN, o da repository più o meno specializzati come Bioconductor o creati da singoli programmatori e disponibili su GitHub, offre il più incredibile insieme di funzionalità per la programmazione, la gestione e l’analisi statistica e grafica di dati. Insomma, se c’è uno strumento nuovo è probabile che sia disponibile su R anni prima che sia reso disponibile (se mai lo sarà) in altri software, commerciali o gratuiti.
è potente: anche con un notebook relativamente poco performante è possibile eseguire in maniera efficace e rapida analisi molto complesse di set di dati relativamente grandi (alcuni GB). R, tuttavia, può essere usato su cluster di calcolo e gestire problemi veramente enormi13.
è popolare, trasparente e riproducibile: la comunità degli utilizzatori di R ha una fortissima tradizione di condivisione e aiuto reciproco, come testimoniato dalle decine di blog, forum, siti web dedicati, in maniera più o meno specifica, a R. Inoltre, se scrivi bene il codice e fornisci tutti i dati necessari, le tue analisi possono essere ripetute esattamente come le hai “pensate” (e persino migliorate!): in un mondo in cui sempre più spesso viene richiesto di fornire dati e software in maniera aperta questo è un aspetto assolutamente fondamentale. Infine, per come la vedo io, ha strumenti potentissimi per la presentazione dei risultati dell’analisi sotto una miriade di formati, inclusi quelli interattivi14.
può migliorare le tue prospettive di carriera: una buona conoscenza della programmazione in R sta diventando rapidamente un asset fondamentale per lavorare nella ricerca pubblica e privata e, in generale, nell’analisi dei dati.
Vorrei poter aggiungere che saper usare R è una cosa fighissima e sexy (e migliora di molto la tua probabilità di rimorchiare ragazz*), ma non sono del tutto sicuro che sia vero. Quello che è vero è che programmare in R può essere molto soddisfacente.
1.3.1 Provare per credere: App, GUI, IDE e altre diavolerie.
Installare R.
Puoi scaricare l’applicazione (o software o app) R dal CRAN15. Fai attenzione alla versione del tuo sistema operativo e in generale alle caratteristiche della tua macchina: non tutte le versioni di R sono supportate dalle macchine più “antiche”, ma puoi sempre trovare la versione “legacy” adatta alla tua macchina. Se hai già installato altro software sul tuo computer non dovresti avere difficoltà. Altrimenti, usando un motore di ricerca puoi trovare facilmente dei video tutorial, anche in italiano16.
R GUI.
Concluso il processo di installazione troverai l’icona di R sul tuo desktop o dovunque siano le icone delle applicazioni sul tuo sistema, e potrai aprire l’interfaccia grafica (Graphical User Interface o GUI).
Quella che vedi qui sotto è la GUI di R 4.1 per MacOS, che non è cambiata granché nelle versioni più recenti17.
Figura 1.1: La Graphical User Interface di R per MacOS
Anche se ho aperto qualche finestra in più, ti renderai conto che si tratta di un’interfaccia minimalista: pochi menu, tab, frame, pochissime finestre…18. E, soprattutto c’è un inquietante cursore lampeggiante vicino al segno > nella console (lo spazio principale in cui è possibile inserire i comandi e il segno > è il prompt).
In R i comandi vengono scritti nella console (e per eseguirli è sufficiente premere <invio>), ed è nella console che appaiono molti dei risultati delle analisi, oltre che messaggi (inclusi quelli di errore).
Proviamo ad eseguire un comando. Nella console, scrivi dopo il prompt:
>demo(graphics)
e premi invio. Se segui le istruzioni sulla console19, vedrai apparire una serie di demo delle capacità grafiche di R (c’è molto di più, credimi).
Ora, prova a scrivere:
>help(demo)
Si aprirà una finestra con l’aiuto (le istruzioni) per l’uso della funzione/comando “demo”, che hai appena usato.
Complimenti, hai scritto ed eseguito i tuoi due primi comandi in R!!.
Altre GUI.
Facciamo un salto in avanti e proviamo a scrivere ed eseguire un altro comando20.
>library(Rcmdr)
Se appare un errore è perché il pacchetto non è ancora installato nel tuo sistema. Vedremo in dettaglio l’installazione dei pacchetti in un capitolo successivo, ma, per installare R commander e i pacchetti di cui ha bisogno per funzionare (le dependencies) puoi eseguire il comando:
>install.packages("Rcmdr", dependencies = T)
Se tutto va bene, sulla console appariranno un po’ di messaggi:21
Figura 1.2: Caricare R Commander
Il risultato è l’apertura della GUI di R Commander, una graphical user interface piuttosto bruttina e minimalista che però consente di usare R in maniera simile a molti altri software di analisi grafica e statistica (ma credimi, non è quello che vuoi veramente, o, se lo vuoi, puoi smettere di leggere questo libro).
Figura 1.3: La GUI di R Commander
RStudio.
RStudio è un ambiente di sviluppo integrato (IDE)22 disponibile sia come versione gratuita che con una serie di versioni professionali. L’installazione di RStudio richiede la presenza di R sul tuo sistema. Scaricare e installare RStudio è semplice. Scegli la versione che preferisci, scarica l’installer e segui le istruzioni23.
Una volta scaricato e installato il software, aprilo, ed ecco qui:
Figura 1.4: RStudio
RStudio rende molto più facile lavorare con R ed è la IDE a cui farò riferimento in questo libro. Più di recente, Posit (la compagnia che fino al 2022 si chiamava RStudio) ha lanciato una nuova IDE, Positron, che, pur ricalcando per qualche verso RStudio, permette una maggiore integrazione con altri linguaggi (Python in particolare) e integra pesantemente assistenti basati sull’AI. Nel frattempo, anche RStudio ha integrato Claude AI come assistente alla programmazione.
Radiant.
Radiant è una piattaforma interattiva per condurre analisi statistiche per l’analisi predittiva e statistica aziendale. In realtà, si tratta di un’interfaccia realizzata con RStudio, piuttosto completa.
L’uso è abbastanza semplice e intuitivo. E’ sufficiente scaricare il pacchetto dal CRAN e installarlo, caricarlo in memoria e lanciare l’interfaccia (per uscire usa il tasto <esc> nella console:
>install.packages("radiant")
>require(radiant)
>radiant::radiant()
In alternativa, dopo aver installato il pacchetto, è possibile lanciarlo da RStudio con <Tools -> Addins -> Browse Addins...>.
Il software si apre di default nel vostro browser, ma può essere aperto nel Viewer di RStudio.
1.4 L’altra faccia della medaglia: troppa fatica.
Beh, ma ancora una volta, se sei qui è perché non hai voglia di perdere tempo o perché, essendo pigr*, non vuoi fare troppa fatica per imparare a usare R, o perché ci hai già provato e hai lasciato perdere. Molti avranno cercato di scoraggiarti, proponendoti alternative più o meno valide. Fra i (tanti) difetti di R viene citata la lentezza, le limitazioni nell’uso della memoria, etc., ma il principale è sicuramente lo sforzo richiesto per raggiungere un ragionevole livello di padronanza dell’uso di questo linguaggio per l’analisi dei dati.
“R has a steep learning curve”.
Avrai sicuramente letto che “R has a steep learning curve”: è una frase che non ha molto senso (se si pensa alla forma di una curva di apprendimento) ma che vuole fondamentalmente dire che, all’aumentare dell’esperienza o del tempo speso nell’apprendimento i progressi iniziali sono relativamente lenti. D’altra parte, con R non si finisce mai di imparare e, sicuramente, l’esperienza di apprendimento di R, se sei motivat*, ripaga molto più degli sforzi comunque necessari per apprendere l’uso di molti software statistici professionali24. E’ certamente un processo frustrante, come puoi vedere dalla figura successiva25, ma se terrai duro, leggendo (beh, studiando, almeno un po’) questo libro arriverai sicuramente alla fase 2.
Figura 1.5: La vera curva di apprendimento di R.
Ma perché può essere difficile imparare a usare R?
è un linguaggio26 e, fondamentalmente, devi “scrivere”, sotto forma di singole istruzioni o script o app quello che vuoi fare, e quindi ti tocca conoscere la sintassi (l’insieme di regole che ti permettono di comporre un comando che funzioni)27 (figura 1.6) e acquisire il vocabolario (R base ha centinaia di funzioni e migliaia di altre funzioni sono aggiunte dai pacchetti/librerie)
la documentazione è quasi esclusivamente in inglese (e talvolta in un inglese decisamente tecnico)
ci sono, letteralmente, molti modi di scuoiare un gatto: lo stesso risultato (in termini di operazioni preliminari di trasformazione e riorganizzazione dei dati, di analisi grafica e statistica) può essere ottenuto in molti modi diversi. Per esempio i pacchetti del tidyverse costituiscono in qualche modo un’evoluzione del linguaggio di base, basato su un concetto molto coerente di organizzazione della sintassi e delle strutture dei dati. Scegliere se concentrarsi sull’apprendimento della versione “base” di R o sugli equivalenti “tidy” di molte funzioni è un una scelta personale ma, per molte ragioni, è necessario avere una qualche conoscenza di entrambi i sistemi
R può essere usato in molti modi:
in modo “interattivo”, per se stessi: immettendo i comandi ad uno alla volta nella console ed eseguendoli uno per volta: il risultato del comando produrrà altri oggetti, un output (che andrà su file o alla console) o un “effetto collaterale” (p.es. il salvataggio di un file). Questo è ovviamente il modo più semplice per iniziare, ma più inefficiente per “comunicare” i risultati dell’analisi e meno ripetibile28, ma è anche il modo in cui “si provano” i comandi.
in modo “programmatico”, per se stessi, o per altri: i comandi (che magari hai prima testato in modo interattivo) vengono raccolti in uno script e, se si organizza il tutto sotto forma di un documento in R Markdown e si usano altri accorgimenti (p.es. con l’uso di “progetti”) è possibile riprodurre e ripetere l’analisi (eventualmente con minime modificazioni) quante volte si vuole, generando report che includono i risultati delle analisi statistiche e grafiche, oltre che, eventualmente, il codice sotto forma di una varietà di formati (documenti in MS Word, html, pdf, slide, etc.).
sviluppando applicazioni interattive: con R (e diversi pacchetti aggiuntivi) si possono sviluppare documenti e applicazioni interattive, che consentono ad utenti anche inesperti di controllare l’output dell’analisi, scegliendo per esempio cosa rappresentare in un grafico (e, in alcuni casi, come farlo). Molti pacchetti di R (Shiny, Plotly, learnr, bookdown29) consentono di sviluppare documenti, tutorial o applicazioni interattive, pronte per l’uso nel web.
Questa enorme flessibilità è una della ragioni per cui chiunque voglia condurre analisi grafica e statistica in modo professionale dovrebbe imparare a usare R.
Figura 1.6: Esempi di comandi scritti alla console.
1.5 R, per pigri.
E quindi, eccoci qui: questo libro nasce proprio per aiutare te (che sei pigr* o non hai tempo) ad imparare ad usare R e condurre almeno il minimo indispensabile di analisi grafiche e statistiche tipicamente utilizzate nella ricerca biologica. L’approccio sarà sostanzialmente pragmatico, cercando di limitare al minimo le descrizioni formali e facendo il possibile per indirizzarti verso i percorsi di apprendimento più rapidi e verso le risorse (libri, siti web, etc.) più utili. Credo che questa sia, forse, la cosa più importante, anche se finirà per riflettere quelle che sono, inevitabilmente, inclinazioni personali: la documentazione su R è sterminata e non sempre molto efficace. Nelle note a piè di pagina e nei link troverai le risorse essenziali, ma anche ulteriori risorse per approfondire.
Dal momento che tutto (beh, quasi tutto30 c’è qualcosa in altre lingue) il materiale interessante su R è in inglese, la scelta di scrivere in italiano potrebbe sembrare un po’ controintuitiva. Tuttavia, tu sei pigr* e io, per esperienza, so che il mix di inglese, informatica e statistica può essere decisamente letale.
Nel caso la tua pigrizia ti spingesse a credere che imparare a fare analisi statistica con un qualsiasi altro software sia più semplice che farlo con R, vorrei dire un’altra volta che questo può essere vero, ma solo in parte. L’ultima volta che ho guardato i manuali d’uso di Systat erano qualcosa come 7 volumi e imparare ad usare bene un software professionale per l’analisi statistica non è sicuramente una passeggiata (per pigri).
Vale la pena di ripetere che lo sviluppo esponenziale di Large Language Models (generalisti, come Claude AI, Gemini e ChatGPT o specialisti, come GitHub Copilot) ha reso facilissimo (e diabolicamente efficace) generare codice (in R, come in altri linguaggi) partendo da prompt scritti in linguaggio naturale. Tuttavia, come sempre, vale l’adagio “Garbage in, garbage out” e temo (per voi) che senza una discreta esperienza di programmazione sia difficile sapere cosa chiedere o individuare gli errori nel codice. Tuttavia, raggiunto un certo livello di esperienza questi strumenti possono effettivamente far risparmiare tantissimo lavoro anche se, come spesso capita, la loro nascita sta sostanzialmente uccidendo gli strumenti (i blog e i forum) che erano stati usati per addestrarli.
Quindi, iniziamo!!
eh, ma che cos’è una console… un po’ di pazienza, arrivate almeno al capitolo 1↩︎
Graphical User Interface↩︎
se ti interessa un pistolotto abbastanza lungo sulla storia di R il migliore è qui, anche se è decisamente un tantino tecnico, ed è in inglese. Qualcosa in italiano la trovi qui.↩︎
RStudio rende disponibile una versione cloud di R↩︎
un notebook è un documento che unisce narrazione - il testo che descrive l’analisi e i risultati - e azione - i kernel di calcolo che eseguono le analisi. Immagina uno scienziato che scrive un articolo sul clima: può usare un notebook per alternare blocchi di testo, in cui spiega la sua teoria, con blocchi, o kernel, di codice analizzano i dati e generano grafici e tabelle; e la cosa più bella è che i notebook possono essere facilmente condivisi e, spesso, “vivono” su server remoti e possono essere usati in un browser.↩︎
al momento della revisione di questo capitolo, maggio 2026, nel solo CRAN sono disponibili 24284 pacchetti; il numero di pacchetti disponibili su varie fonti è ancora maggiore; clicca qui per delle statistiche aggiornate↩︎
qualche dettaglio in più, con un confronto con alcuni software commerciali, lo trovi qui↩︎
questo libro è scritto in RStudio sotto forma di documento Rmarkdown, usando comandi di R per generare analisi statistiche e grafiche↩︎
in realtà dallo stesso sito potresti voler scaricare varie utility necessarie per la compilazione delle librerie o pacchetti, ma questo non è strettamente necessario, perché quasi tutti i pacchetti sono o saranno disponibili in un formato immediatamente installabile↩︎
la versione più recente nel momento in cui sto correggendo le bozze è 4.6↩︎
puoi confrontarla con quella dei software statistici che conosci, o, semplicemente, cercare “SAS graphical user interface” su un motore di ricerca, sostituendo SAS con il tuo software favorito (beh, favorito fino all’altro ieri) e selezionando le immagini come risultati↩︎
se ti stanchi usa il tasto
<esc>↩︎questo particolare comando carica nell’“ambiente” un pacchetto già installato.↩︎
sono dei
warningo avvisi, in rosso: richiedono l’attenzione dell’utente ma non indicano condizioni fatali, che non permetterebbero di portare a termine le operazioni↩︎usa un motore di ricerca per cercare “installare RStudio video” e appariranno i link a decine di video, più o meno efficaci, un tributo alla necessità di essere rassicurati, immagino.↩︎
e ti spinge a pensare a quello che stai facendo, soprattutto in termini di analisi statistica, il che é un’ottima cosa↩︎
non sono riuscito a trovare la fonte originale dell’immagine, che comunque ho modificato; il candidato più probabile è qui↩︎
per quanto di alto livello, cioé relativamente vicino al linguaggio naturale↩︎
R può essere molto “sensibile”, basta usare male maiuscole o minuscole o non scrivere esattamente il nome di una funzione o di un parametro per ottenere soltanto un messaggio di errore, qualche volta molto criptico; fortunatamente RStudio ti aiuta con suggerimenti e altro, cosa che non fa la scontrosa GUI di R, che è progettata per i puri e duri↩︎
a meno che, come vedremo dopo, tu non conservi una traccia di quello che hai fatto sotto forma di uno script↩︎
incidentalmente questo libro è scritto con R markdown e trasformato in un libro con bookdown e, nel futuro, i tutorial saranno prodotti con learnr↩︎