library(tidyverse)HW 01 - Primi passi in R
Data di consegna: martedì 29 settembre 2026
Introduzione
In questo compito utilizzerai i comandi utili per:
- valutare espressioni in R e assegnarne il risultato a un oggetto
- scegliere nomi validi per gli oggetti
- chiamare funzioni passando gli argomenti per nome, per posizione e in modo misto
- creare oggetti atomici (vettori, matrici e array) di tipo
numericecharacter - esplorare modalità, lunghezza e attributi di un oggetto
- gestire gli oggetti presenti nel workspace
Obiettivi di apprendimento
Lo svolgimento di questo compito ti permetterà di:
- comprendere come R valuta un’espressione e cosa accade quando il risultato viene assegnato a un oggetto
- leggere la pagina di help di una funzione e usarne correttamente gli argomenti
- comprendere la struttura degli oggetti atomici e il ruolo degli attributi
- interpretare i messaggi di errore e di avvertimento restituiti da R
Istruzioni per l’uso
Esegui i comandi nella console di RStudio o di Positron e scrivi le risposte in un editor di testo a tua scelta (ad esempio Word, Google Docs, LibreOffice Writer).
Per ogni punto riporta:
- il numero del punto (ad esempio PUNTO 1)
- i comandi che hai eseguito
- l’output restituito da R, copiato dalla console (inclusi eventuali messaggi di errore o di avvertimento)
- un breve commento, quando richiesto
Nei commenti concentrati sul comportamento di R: cosa è successo, perché, e cosa ti ha sorpreso. Bastano poche righe, ma scritte con parole tue.
Per rendere leggibili comandi e output, scrivili con un carattere a spaziatura fissa (ad esempio Consolas o Courier New).
Al termine converti il documento in PDF e salvalo con il nome “hw01_cognome_nome.pdf”: ad esempio nel mio caso il nome del file sarebbe “hw01_vistocco_domenico.pdf”.
Alcuni punti usano funzioni che non abbiamo ancora visto in aula: in quei casi trovi un riquadro Suggerimento con una breve spiegazione. Usa sempre anche la pagina di help della funzione, che si apre digitando ? seguito dal nome della funzione (ad esempio ?seq).
Esercizi
Non preoccuparti degli errori: in diversi punti sono voluti. Riporta il messaggio così come compare nella console e commentalo.
Parte 1: Espressioni e assegnazioni
Digita in console le due espressioni
5 + 3 * 2e(5 + 3) * 2. Commenta brevemente la differenza tra i due risultatiEsegui l’istruzione
a <- 10e poi l’istruzione(a <- 10). Commenta la differenza tra gli output restituiti nei due casiEsegui l’istruzione
a < -5(con uno spazio tra<e-) e subito dopo digitaaper stamparne il contenuto. Commenta: cosa ha fatto R con la prima istruzione? Il valore diaè cambiato?Crea un oggetto
bassegnandogli il risultato dia * 2. Assegna poi adail valore1e stampab. Commenta: il valore dibè cambiato dopo la modifica dia? Perché?Digita in console
3 *e premi Invio. Commenta cosa cambia nel simbolo all’inizio della riga della console e perché. Completa poi l’espressione digitando4e premendo Invio
Se in console compare il simbolo + al posto del consueto >, R sta aspettando il completamento di un’espressione. Se vuoi abbandonare l’espressione senza completarla, premi il tasto Esc.
Parte 2: Nomi degli oggetti
Prova ad assegnare il valore
1a ciascuno dei seguenti nomi, con un’istruzione per ciascun nome:voto_finale,voto.finale,.voto,2voto,voto finale,_voto,TRUE. Indica quali assegnazioni vanno a buon fine e quali no, e per ciascuna di quelle che falliscono spiega quale regola di nomenclatura viene violataEsegui l’istruzione
Voto <- 28e poi digitavoto. Commenta il risultato
Parte 3: Chiamata di funzioni
Consulta la pagina di help della funzione
seqe individua i nomi e l’ordine dei suoi primi tre argomenti. Crea poi un oggettos_nomecontenente la sequenza dei numeri da 1 a 20 con passo 3, passando tutti gli argomenti per nomeCrea un oggetto
s_poscontenente la stessa sequenza del punto 8, passando tutti gli argomenti per posizioneCrea un oggetto
s_mistocontenente la stessa sequenza del punto 8, passando l’argomentobyper nome come primo argomento della chiamata e gli altri due argomenti per posizioneEsegui l’istruzione
seq(3, 1, 20)e commenta il risultato alla luce del meccanismo di passaggio degli argomenti per posizione
Questo comando restituisce un errore
Esegui l’istruzione
seq(1, 20, length.out = 5)e confronta il risultato con quello del punto 8. Commenta la differenza tra gli argomentibyelength.outEsegui le tre istruzioni
round(123.456, 1),round(123.456)eround(123.456, -1). Commenta i tre risultati: cosa accade quando non si specifica il secondo argomento? E quando gli si assegna un valore negativo?
Nella sezione Usage della pagina di help (?round) sono riportati gli argomenti della funzione: quando un argomento è seguito da = e da un valore, quel valore è il valore di default, cioè il valore usato da R se l’argomento non viene specificato nella chiamata.
Parte 4: Vettori, modalità e lunghezza
Crea un vettore
etacontenente i valori 23, 25, 22, 30 e 27. Stampa a video la modalità (funzionemode) e la lunghezza (funzionelength) dietaCrea un vettore
nomicontenente cinque nomi di persona a tua scelta. Stampa a video la modalità e la lunghezza dinomiEsegui l’istruzione
nchar(nomi)e confronta il risultato con quello dilength(nomi). Commenta la differenza tra le due funzioni
La funzione nchar restituisce il numero di caratteri di ciascun elemento di un vettore di stringhe.
Crea un oggetto
mistocombinando con la funzioneci due vettorietaenomi. Stampa a videomisto, la sua modalità e la sua lunghezza. Commenta: cosa è accaduto ai valori numerici?Esegui le istruzioni
eta + 1,eta * 2eeta + c(1, 2). Commenta come R esegue le operazioni tra un vettore e un singolo numero e tra due vettori di lunghezza diversa
L’ultimo comando restituisce un messaggio di avvertimento (warning), non un errore: il risultato viene comunque calcolato
Quando due vettori hanno lunghezza diversa, R “ricicla” gli elementi del vettore più corto, ripetendoli dall’inizio fino a raggiungere la lunghezza del vettore più lungo. Questo meccanismo si chiama regola del riciclo (recycling rule).
- Esegui l’istruzione
nomi + 1e commenta il risultato
Questo comando restituisce un errore
- Esegui le istruzioni
paste("Studente", nomi)epaste0("Studente", nomi). Commenta i risultati: quale regola vista al punto 18 sembra applicarsi anche qui? Che differenza c’è tra le due funzioni?
Le funzioni paste e paste0 concatenano (cioè uniscono) stringhe di testo. Consulta la pagina di help per individuare l’argomento che le distingue.
- Esegui l’istruzione
as.numeric(c("10", "20", "tre"))e commenta il risultato, anche in relazione a quanto visto al punto 17
La funzione as.numeric tenta di convertire un oggetto nella modalità numeric. Il simbolo NA (Not Available) indica in R un valore mancante.
Parte 5: Matrici e array
- Crea una matrice
mcon l’istruzionematrix(1:12, nrow = 3)e stampala a video. Commenta: in che ordine sono stati disposti i valori nella matrice?
L’espressione 1:12 costruisce il vettore dei numeri interi da 1 a 12: l’operatore : è una forma abbreviata di seq con passo 1.
- Crea una matrice
m_rigacon gli stessi valori dim, ma disposti per riga, e stampala a video
Consulta la pagina di help della funzione matrix e individua l’argomento che controlla il riempimento della matrice.
Stampa a video la modalità, la lunghezza e le dimensioni (funzione
dim) dim. Commenta il valore restituito dalengthEsegui l’istruzione
matrix(1:10, nrow = 3)e commenta il risultato
Questo comando restituisce un messaggio di avvertimento
- Crea un array
arrcon l’istruzionearray(1:24, dim = c(2, 3, 4))e stampalo a video. Stampa poi le sue dimensioni e la sua lunghezza. Commenta come R visualizza in console un oggetto con tre dimensioni
Parte 6: Attributi
- Stampa a video gli attributi del vettore
eta(funzioneattributes). Assegna poi agli elementi dietai nomi contenuti nel vettorenomiusando la funzionenames, e stampa di nuovo siaetasia i suoi attributi. Commenta cosa è cambiato e cosa è rimasto uguale
La funzione names si usa in due modi: names(x) restituisce i nomi degli elementi di x, mentre names(x) <- valori li assegna.
- Stampa a video gli attributi della matrice
m. Crea poi un vettorevcon l’istruzionev <- 1:12, assegnagli l’attributo dimensione con l’istruzionedim(v) <- c(3, 4)e stampav. Confrontavconmusando l’istruzioneidentical(v, m)e commenta il risultato: cosa ci dice su come R rappresenta una matrice?
La funzione identical restituisce TRUE se i due oggetti passati come argomenti sono esattamente uguali (valori e attributi), FALSE altrimenti.
- Esegui l’istruzione
dim(v) <- c(5, 3)e commenta il risultato, confrontandolo con quello del punto 25
Questo comando restituisce un errore
Parte 7: Gestione del workspace
Esegui l’istruzione
ls()e commenta il risultato. Confrontalo con quanto mostrato nel pannello Environment di RStudio (o Variables di Positron)Cancella dal workspace l’oggetto
misto, esegui di nuovols()e prova poi a stamparemisto. Commenta il risultatoEsegui in sequenza le istruzioni
pi,pi <- 3,pi,rm(pi)epi. Commenta i risultati: da dove proviene l’oggettopistampato la prima e l’ultima volta? Perché non compariva nell’output dils()del punto 30?Cancella tutti gli oggetti dal workspace con un’unica istruzione ed esegui di nuovo
ls(). Commenta l’output restituito
ADD-IN: Installazione di package
- Installa il package
tidyverseutilizzando la funzioneinstall.packageso l’interfaccia grafica (in RStudio: scheda Packages + Install)
Un package è una raccolta di funzioni (e spesso di dati) che estende le funzionalità di base di R. L’installazione va fatta una sola volta; il package va invece caricato con la funzione library in ogni nuova sessione di R in cui si vuole usarlo. Il nome del package va passato a install.packages come stringa, cioè tra virgolette.
- Verifica che l’installazione sia andata a buon fine caricando il package con la seguente istruzione
Se l’installazione ha funzionato viene stampato a video un messaggio articolato di questo tipo:
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.2.1 ✔ readr 2.2.0
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.3 ✔ tibble 3.3.1
✔ lubridate 1.9.5 ✔ tidyr 1.3.2
✔ purrr 1.2.2
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Se hai avuto problemi con l’installazione su Windows:
- chiudi RStudio (o Positron)
- installa sul PC la versione di
Rtoolscorrispondente alla tua versione di R (disponibile qui: https://cran.r-project.org/bin/windows/Rtools/); la versione di R si legge nella prima riga della console all’avvio - riapri RStudio (o Positron) e ripeti l’installazione di
tidyverse
Se il problema persiste, riporta nel documento il messaggio di errore ottenuto e scrivimi su Teams.
Consegna
Per inviare la tua soluzione:
- Carica il file
hw01_cognome_nome.pdfsu Teams, in risposta al compito assegnato
Valutazione
Totale punti disponibili: 110 punti
| Component | Punti |
|---|---|
| Es 1 - 35 | 100 |
| Chiarezza & formattazione | 101 |
Footnotes
La valutazione di “Chiarezza & formattazione” tiene conto dell’ordine e della leggibilità del documento: ogni punto deve essere facilmente identificabile, comandi e output devono essere riportati per intero e distinguibili dal testo dei commenti↩︎