HW 09 - programmazione funzionale

Data di consegna: lunedì 05 gennaio 2026

Introduzione

In questo compito utilizzerai i comandi utili per:

  • effettuare iterazioni sfruttando la logica della programmazione funzionale

Obiettivi di apprendimento

Lo svolgimento di questo compito ti permetterà di:

  • usare R per effettuare iterazioni sfruttando i comandi della famiglia map
  • usare R per effettuare iterazioni sfruttando i comandi della famiglia walk

Istruzioni per l’uso

  • Crea un progetto associandolo ad una cartella “RLab_hw09_cognome_nome” sul tuo disco: nel mio caso il nome della cartella sarebbe: “RLab_hw09_vistocco_domenico”.

  • Utilizza i commenti nei file .R e il testo statico nei file .qmd per rispondere alle domande in cui viene chiesta un’interpretazione da parte tua

  • Assicurati che sia il report che lo script siano correttamente funzionanti: aprendo il tuo file di progetto sul mio PC devo essere in grado di provare i file .R e di compilare (Render) i file .qmd

  • Gli script e i report vengono valutati sia in base alla correttezza del codice che in base alla qualità (stile utilizzato per rendere gli script e i report leggibili ed ordinati).

Esercizi

NoteNota

Ricordati di utilizzare i commenti per le risposte aperte nei file .R e il testo statico nei file .qmd

Parte 1: Iterazione sfruttando le funzioni della famiglia map {purrr}

  1. Sfrutta una funzione della famiglia map {purrr} per creare una lista lst_zscore contenenti 10 campioni di 100 numeri casuali estratti da una normale standardizzata

  2. Sfrutta una funzione della famiglia map {purrr} per creare un vettore con le medie dei 10 campioni calcolati al punto precedente

  3. Sfrutta una funzione della famiglia map {purrr} per creare una tabella tbl_zscore con 10 colonne, dove ogni colonna contiene un campione casuale di 100 numeri estratti da una normale standard

  4. Sfrutta una funzione della famiglia map {purrr} per creare un vettore con le medie dei 10 campioni calcolati al punto precedente

  5. Crea sul workspace un oggetto medie = c(10, 20, 30, 40, 50) e sfrutta una funzione della famiglia map {purrr} per creare una lista lst_normali dove ogni elemento contiene un campione di 100 numeri casuali di una v.c. normale per ciascuna delle cinque medie usando sempre il valore 2 per lo scarto quadratico medio.

  6. Ripeti il punto precedente sfruttando una funzione della famiglia map {purrr} ma organizza i risultati in una tabella tbl_normali_uno con 5 colonne, una per ciascun campione generato.

  7. Crea sul workspace un oggetto sqm_uno = c(1, 2, 3, 4, 5) e sfrutta una funzione della famiglia map {purrr} per creare una lista lst_normali_due dove ogni elemento contiene un campione di 100 numeri casuali di una v.c. normale con medie e varianze date dalle coppie di uguale posizione dei due vettori medie e sqm_uno, ovvero: (10, 1), (20, 2), (30, 3), (40, 4) e (50, 5).

  8. Ripeti il punto precedente sfruttando una funzione della famiglia map {purrr} ma organizza i risultati in una tabella tbl_normali_due con 5 colonne, una per ciascun campione generato.

  9. Crea sul workspace due oggetti n = c(100, 200) e sqm_due = c(10, 20, 30) e sfrutta una funzione della famiglia map {purrr} per creare una lista lst_normali_tre con numeri casuali da una variabile casuale normale per ciascuna combinazione dei valori di n, medie e sqm_due.

TipSuggerimento

Sfrutta la funzione expand_grid {tidyr} per costruire la griglia delle combinazioni di valori di n, medie e sqm_due e poi sfrutta una funzione della famiglia map {purrr} per generare i campioni

Parte 2: Iterazione sfruttando le funzioni della famiglia walk {purrr}

  1. Sfrutta una funzione della famiglia walk {purrr} per produrre un istogramma per ciascun campione casuale della lista lst_zscore

  2. Sfrutta una funzione della famiglia walk {purrr} per produrre un istogramma per ciascun campione casuale della tabella tbl_zscore

  3. Sfrutta una funzione della famiglia walk {purrr} per salvare ciascun campione casuale della lista lst_normali in un file csv usando come nome dei file: campione-1.csv, campione-2.csv, …

  4. Sfrutta una funzione della famiglia walk {purrr} per salvare ciascun campione casuale della lista lst_normali_tre in un file csv usando come nome dei file la struttura campione-n_X-media_Y-sqm_Z.csv, dove X è il valore di n (numero elementi del campione), Y è il valore di medie (media usata per generare il campione) e Z il valori di sqm_due (scarto quadratico medio usato per generare il campione)

TipNOTA

Usa i valori 0 ed 1 come default per gli argomento mu e sigma

  1. Crea un file R per rispondere ai quesiti usando i commenti per indicare il numero del quesito cui il codice fa riferimento.

Consegna

Per inviare la tua soluzione:

  • Salva i file .R con le tue soluzioni
  • Chiudi il progetto RStudio
  • Comprimi in un file .zip la cartella associata al progetto
  • Carica il file .zip salvato in risposta al compito assegnato su Teams

Valutazione

Totale punti disponibili: 110 punti

Component Punti
Es 1 - 15 100
Workflow & formattazione 101

Footnotes

  1. La valutazione al “Workflow & formattazione” tiene conto del principio di riproducibilità del codice: lo script caricato deve funzionare senza errori su qualunque PC dando gli stessi risultati↩︎