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 numeric e character
  • 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”.

NoteNota

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

NoteNota

Non preoccuparti degli errori: in diversi punti sono voluti. Riporta il messaggio così come compare nella console e commentalo.

Parte 1: Espressioni e assegnazioni

  1. Digita in console le due espressioni 5 + 3 * 2 e (5 + 3) * 2. Commenta brevemente la differenza tra i due risultati

  2. Esegui l’istruzione a <- 10 e poi l’istruzione (a <- 10). Commenta la differenza tra gli output restituiti nei due casi

  3. Esegui l’istruzione a < -5 (con uno spazio tra < e -) e subito dopo digita a per stamparne il contenuto. Commenta: cosa ha fatto R con la prima istruzione? Il valore di a è cambiato?

  4. Crea un oggetto b assegnandogli il risultato di a * 2. Assegna poi ad a il valore 1 e stampa b. Commenta: il valore di b è cambiato dopo la modifica di a? Perché?

  5. Digita in console 3 * e premi Invio. Commenta cosa cambia nel simbolo all’inizio della riga della console e perché. Completa poi l’espressione digitando 4 e premendo Invio

TipSuggerimento

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

  1. Prova ad assegnare il valore 1 a 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 violata

  2. Esegui l’istruzione Voto <- 28 e poi digita voto. Commenta il risultato

Parte 3: Chiamata di funzioni

  1. Consulta la pagina di help della funzione seq e individua i nomi e l’ordine dei suoi primi tre argomenti. Crea poi un oggetto s_nome contenente la sequenza dei numeri da 1 a 20 con passo 3, passando tutti gli argomenti per nome

  2. Crea un oggetto s_pos contenente la stessa sequenza del punto 8, passando tutti gli argomenti per posizione

  3. Crea un oggetto s_misto contenente la stessa sequenza del punto 8, passando l’argomento by per nome come primo argomento della chiamata e gli altri due argomenti per posizione

  4. Esegui l’istruzione seq(3, 1, 20) e commenta il risultato alla luce del meccanismo di passaggio degli argomenti per posizione

Warning

Questo comando restituisce un errore

  1. Esegui l’istruzione seq(1, 20, length.out = 5) e confronta il risultato con quello del punto 8. Commenta la differenza tra gli argomenti by e length.out

  2. Esegui le tre istruzioni round(123.456, 1), round(123.456) e round(123.456, -1). Commenta i tre risultati: cosa accade quando non si specifica il secondo argomento? E quando gli si assegna un valore negativo?

TipSuggerimento

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

  1. Crea un vettore eta contenente i valori 23, 25, 22, 30 e 27. Stampa a video la modalità (funzione mode) e la lunghezza (funzione length) di eta

  2. Crea un vettore nomi contenente cinque nomi di persona a tua scelta. Stampa a video la modalità e la lunghezza di nomi

  3. Esegui l’istruzione nchar(nomi) e confronta il risultato con quello di length(nomi). Commenta la differenza tra le due funzioni

TipSuggerimento

La funzione nchar restituisce il numero di caratteri di ciascun elemento di un vettore di stringhe.

  1. Crea un oggetto misto combinando con la funzione c i due vettori eta e nomi. Stampa a video misto, la sua modalità e la sua lunghezza. Commenta: cosa è accaduto ai valori numerici?

  2. Esegui le istruzioni eta + 1, eta * 2 e eta + c(1, 2). Commenta come R esegue le operazioni tra un vettore e un singolo numero e tra due vettori di lunghezza diversa

Warning

L’ultimo comando restituisce un messaggio di avvertimento (warning), non un errore: il risultato viene comunque calcolato

TipSuggerimento

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).

  1. Esegui l’istruzione nomi + 1 e commenta il risultato
Warning

Questo comando restituisce un errore

  1. Esegui le istruzioni paste("Studente", nomi) e paste0("Studente", nomi). Commenta i risultati: quale regola vista al punto 18 sembra applicarsi anche qui? Che differenza c’è tra le due funzioni?
TipSuggerimento

Le funzioni paste e paste0 concatenano (cioè uniscono) stringhe di testo. Consulta la pagina di help per individuare l’argomento che le distingue.

  1. Esegui l’istruzione as.numeric(c("10", "20", "tre")) e commenta il risultato, anche in relazione a quanto visto al punto 17
TipSuggerimento

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

  1. Crea una matrice m con l’istruzione matrix(1:12, nrow = 3) e stampala a video. Commenta: in che ordine sono stati disposti i valori nella matrice?
TipSuggerimento

L’espressione 1:12 costruisce il vettore dei numeri interi da 1 a 12: l’operatore : è una forma abbreviata di seq con passo 1.

  1. Crea una matrice m_riga con gli stessi valori di m, ma disposti per riga, e stampala a video
TipSuggerimento

Consulta la pagina di help della funzione matrix e individua l’argomento che controlla il riempimento della matrice.

  1. Stampa a video la modalità, la lunghezza e le dimensioni (funzione dim) di m. Commenta il valore restituito da length

  2. Esegui l’istruzione matrix(1:10, nrow = 3) e commenta il risultato

Warning

Questo comando restituisce un messaggio di avvertimento

  1. Crea un array arr con l’istruzione array(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

  1. Stampa a video gli attributi del vettore eta (funzione attributes). Assegna poi agli elementi di eta i nomi contenuti nel vettore nomi usando la funzione names, e stampa di nuovo sia eta sia i suoi attributi. Commenta cosa è cambiato e cosa è rimasto uguale
TipSuggerimento

La funzione names si usa in due modi: names(x) restituisce i nomi degli elementi di x, mentre names(x) <- valori li assegna.

  1. Stampa a video gli attributi della matrice m. Crea poi un vettore v con l’istruzione v <- 1:12, assegnagli l’attributo dimensione con l’istruzione dim(v) <- c(3, 4) e stampa v. Confronta v con m usando l’istruzione identical(v, m) e commenta il risultato: cosa ci dice su come R rappresenta una matrice?
TipSuggerimento

La funzione identical restituisce TRUE se i due oggetti passati come argomenti sono esattamente uguali (valori e attributi), FALSE altrimenti.

  1. Esegui l’istruzione dim(v) <- c(5, 3) e commenta il risultato, confrontandolo con quello del punto 25
Warning

Questo comando restituisce un errore

Parte 7: Gestione del workspace

  1. Esegui l’istruzione ls() e commenta il risultato. Confrontalo con quanto mostrato nel pannello Environment di RStudio (o Variables di Positron)

  2. Cancella dal workspace l’oggetto misto, esegui di nuovo ls() e prova poi a stampare misto. Commenta il risultato

  3. Esegui in sequenza le istruzioni pi, pi <- 3, pi, rm(pi) e pi. Commenta i risultati: da dove proviene l’oggetto pi stampato la prima e l’ultima volta? Perché non compariva nell’output di ls() del punto 30?

  4. Cancella tutti gli oggetti dal workspace con un’unica istruzione ed esegui di nuovo ls(). Commenta l’output restituito

ADD-IN: Installazione di package

  1. Installa il package tidyverse utilizzando la funzione install.packages o l’interfaccia grafica (in RStudio: scheda Packages + Install)
TipSuggerimento

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.

  1. Verifica che l’installazione sia andata a buon fine caricando il package con la seguente istruzione
library(tidyverse)

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
Warning

Se hai avuto problemi con l’installazione su Windows:

  • chiudi RStudio (o Positron)
  • installa sul PC la versione di Rtools corrispondente 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.pdf su Teams, in risposta al compito assegnato

Valutazione

Totale punti disponibili: 110 punti

Component Punti
Es 1 - 35 100
Chiarezza & formattazione 101

Footnotes

  1. 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↩︎