# PUNTO 1 ------------------------------------------------
HW 01 - Primi passi in R
Data di consegna: lunedì 30 settembre 2024
Introduzione
In questo compito utilizzerai i comandi utili per:
- creare oggetti atomici (vettori, matrici ed array) e non atomici (liste e tabelle) in R
- puntare agli elementi di un oggetto R
- fare operazione su oggetti R
- calcolare alcune statistiche di base su oggetti R
- salvare oggetti in un file RData
Obiettivi di apprendimento
Lo svolgimento di questo compito ti permetterà di:
- comprende gli oggetti tipici utilizzati in R
- manipolare le principali strutture dati usate per l’input e output
- gestire i dati creati in R su file
- estendere l’ambiente attraverso l’installazione di package
Istruzioni per l’uso
Rispondi ai vari punti salvando le risposte in un file R con il nome “hw01_cognome_nome.R”: ad esempio nel mio caso il nome del file sarebbe “hw01_vistocco_domenico.R”.
Per rispondere ad ogni punto inserisci un’etichetta di sezione (che puoi inserire nello script usando la combinazione di testi CTRL/CMD + SHIFT + R) utilizzando il punto cui sta rispondendo. Ad esempio, per rispondere al punto 1 del compito, usa un’etichetta di sezione:
Utilizza i commenti per rispondere alle domande in cui viene chiesta un’interpretazione da parte tua: lo script deve cioè essere funzionante quando si eseguono tutti i comandi con il pulsante Source.
Lo script viene valutato sia in base alla correttezza del codice che in base alla qualità (stile utilizzato per rendere lo script leggibile ed ordinato).
Esercizi
Ricordati di utilizzare i commenti per le risposte aperte.
Parte 1: Crezione/manipolazione di oggetti in R
- Crea un oggetto
num_casualicontenente 8 numeri casuali estratti da una distribuzione normale con media 10 e scarto quadratico medio 3 sfruttando la funzionernorm, disponibile nel packagebasedi R
Sfrutta la pagina di help della funzione rnorm per esplorare gli argomenti di input della funzione
- Crea una matrice
mat_casualidisponendo i valori contenuti innum_casualiin una matrice di 4 righe e 2 colonne
Sfrutta la pagina di help della funzione rnorm per esplorare gli argomenti di input della funzione
Crea un oggetto
str_testocontenente due elementi: il tuo nome alla prima posizione e il tuo cognome alla seconda posizioneCrea un oggetto
mat_mistaaffiancando per colonna i due oggettinum_casualiestr_testo
Sfrutta la funzione cbind
Crea un oggetto
df_mistaaffiancando i due oggettinum_casualiestr_testoin un dataframeCrea un oggetto
prod_scalaremoltiplicando l’oggettonum_casualiper sè stesso e sommando il risultato ottenuto
Usa la funzione sum per ottenere la somma di un vettore
- Crea un oggetto
prod_vet_1moltiplicando l’oggettonum_casualiper sè stesso sfruttando l’operatore%*%
L’operatore %*% effettua la moltiplicazione RI-CO (riga x colonna) dell’algebra lineare
- Crea un oggetto
prod_vet_2moltiplicando la trasposta dell’oggettonum_casualiper l’oggetto inizialenum_casualisfruttando l’operatore%*%
Puoi sfruttare la funzione t per trasporre l’oggetto
- Crea un oggetto
prod_vet_2moltiplicando l’oggetto inizialenum_casualiper il suo trasposto sfruttando l’operatore%*%
Puoi sfruttare la funzione t per trasporre l’oggetto
Commenta brevemente le operazioni richieste ai punti precedenti (da 6 a 9), confrontando tra loro i risultati ottenuti
Crea un oggetto lista
lista_unnamedche contienenum_casuali,str_testo,mat_casuali,mat_mistaedf_mistaCrea un oggetto lista
lista_namedche contienenum_casuali,str_testo,mat_casuali,mat_mistaedf_mista, utilizzando i seguenti nomi per gli elementi della lista:num_cas,txt,mat1,mat2, etb
Parte 2: Indicizzazione
- Estrai dal vettore
num_casualigli elementi che si trovano alle posizioni dispari e stampali sulla console
Puoi sfruttare la funzione seq per costruire il vettore con gli indici delle posizioni di interesse
- Estrai dal vettore
num_casualigli elementi che si trovano alle posizioni pari partendo dall’ultima posizione e stampali sulla console
Prova a rispondere in due modi:
- sfruttando la funzione
seqper costruire il vettore con gli indici delle posizioni di interesse - sfruttando la funzione
revper disporre il vettore in ordine inverso
Sostituisci il valore dell’ultimo elemento del vettore
num_casualiinserendo il numero100Stampa a video l’elemento alla posizione
15del vettore (nota: il vettore ha lunghezza8)Assegna il numero
150all’elemento alla posizione15del vettore (nota: il vettore ha lunghezza8)Commenta brevemente i risultati delle operazioni richieste ai punti precedenti (punti 16 e 17)
Stampa a video l’elemento che si trova alla posizione (terza riga, seconda colonna) della matrice
mat_casualeusando un puntamento con il doppio indiceStampa a video l’elemento che si trova alla posizione (terza riga, seconda colonna) della matrice
mat_casualeusando un puntamento con un singolo indiceStampa a video l’elemento che si trova alla posizione (terza riga, seconda colonna) della matrice
mat_casualeusando un puntamento con un singolo indiceStampa a video l’elemento che si trova alla posizione (terza riga, quarta colonna) della matrice
mat_casuale(nota: anche qui si tratta di una posizione inesistente)
Questo comando restituisce un errore
- Assegna il numero 300 all’elemento che si trova alla posizione (terza riga, quarta colonna) della matrice
mat_casuale
Anche questo comando restituisce un errore
Commenta brevemente i risultati delle operazioni richieste ai punti precedenti (punti 22 e 23) confrontando il risultato delle analoghe operazioni fatte su un vettore (punti 16 e 17)
Elimina dal vettore
num_casualil’elemento che si trova alla seconda posizioneStampa a video gli elementi del vettore
num_casualiminori della media
Puoi sfruttare la funzione mean per calcolare la media
Stampa a video gli elementi della matrice
num_casualiminori della mediaStampa a video la prima colonna del dataframe
df_mistausando un puntamento con il doppio indice (riga, colonna)Stampa a video la prima colonna del dataframe
df_mistausando un puntamento con il singolo indice e la singola parentesi quadraStampa a video la prima colonna del dataframe
df_mistausando un puntamento con il singolo indice e la doppia parentesi quadraStampa a video la prima colonna del dataframe
df_mistausando un puntamento con il singolo indiceCommenta brevemente i risultati delle operazioni richieste ai punti precedenti (punti 30 e 31). Qual è la differenza tra i due tipi di puntamento?
Per esplorare i tipi degli oggetti restituiti puoi sfruttare la funzione mode
Stampa a video l’elemento alla terza posizione della lista
lista_namedusando un puntamento con la doppia parentesi quadraStampa a video l’elemento alla terza posizione della lista
lista_namedusando un puntamento con la singola parentesi quadraStampa a video l’elemento alla terza posizione della lista
lista_namedusando un puntamento che sfrutta il nome dell’elemento (mat1)Commenta brevemente i risultati delle operazioni richieste ai punti precedenti (punti 33, 34 e 35). Qual è la differenza tra i tre tipi di puntamento?
Stampa a video la modalità (funzione
mode) e la classe (funzioneclass) dell’oggettomat_mista
Puoi sfruttare la funzione c per combinare i due output richiesti
Stampa a video la modalità (funzione
mode) e la classe (funzioneclass) dell’oggettodf_mistaStampa a video la modalità (funzione
mode) e la classe (funzioneclass) dell’oggettomat_mistaStampa a video la modalità (
mode) e la classe (class) dell’oggettolista_namedCommenta brevemente i risultati delle operazioni richieste ai punti precedenti (punti da 37 a 40)
Parte 3: Gestione di file dei dati R su disco
- Stampa sulla console la directory corrente (o directory di lavoro)
Puoi sfruttare la funzione getwd
Salva il contenuto dell’intero workspace su un file
tutti_gli_oggetti.RDatanella directory correnteElimina tutti gli oggetti dal workspace
Puoi sfruttare la funzione rm
Carica il file
tutti_gli_oggetti.RDatache hai creato al punto 42Salva gli oggetti
num_casuali,mat_casualielista_namedsu un filesolo_tre_oggetti.RDatanella directory correnteElimina tutti gli oggetti dal workspace
Carica il file
solo_tre_oggetti.RDatache hai creato al punto 45
ADD-IN: Installazione di package
Installa il package
tidyversesul disco utilizzando la funzioneinstall.packageso l’interfaccia grafica (scheda Packages + Install)Verifica che l’installazione sia andata a buon fine caricando il package utilizzando la seguente funzione
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.1.4 ✔ readr 2.1.5
✔ forcats 1.0.0 ✔ stringr 1.5.1
✔ ggplot2 3.5.1 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ purrr 1.0.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:
- Chiudi RStudio:
- Installa sul PC il software
Rtools(disponibile qui: https://cran.r-project.org/bin/windows/Rtools/rtools43/rtools.html) - riapri RStudio e ripeti l’installazione di
tidyverse
Consegna
Per inviare la tua soluzione:
- Carica il file
.Rsalvato in risposta al compito assegnato su Teams
Valutazione
Totale punti disponibili: 110 punti
| Component | Punti |
|---|---|
| Es 1 - 50 | 100 |
| Workflow & formattazione | 101 |
Footnotes
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↩︎