?log
2 Lab 1 - 01/03/2024
Per programmare andremo a scrivere il codice in un file di testo detto script. Per aprire un nuovo script, usare il Menu di RStudio: File - New File - R Script. Il file può essere salvato con File - Save as, oppure cliccando sull’icona del floppy disk (l’estensione del file è .R).
Per eseguire del codice dallo script è necessario posizionarsi sulla linea del codice da lanciare (in qualsiasi punto) e premere ctrl+invio, in caso di utente Windows, o cmd+invio, in caso di utente Mac (è possibile anche eseguire insieme più righe di codice selezionandole e digitando ctrl/cmd+invio). Nello script è possibile inserire dei commenti (non eseguiti da R) utilizzando all’inizio della riga il simbolo di cancelletto #
.
2.1 Funzioni built-in
In R esistono funzioni built-in, ovvero già disponibili (per esempio le funzioni log
, sqrt
, mean
, max
, min
, …). E’ inoltre possibile scrivere delle proprie funzioni (user-defined functions).
Prima di utilizzare una funzione è sempre opportuno visualizzare la sua pagina di help (tramite ?nomedellafunzione
) in modo da capire quali siano i suoi argomenti e gli eventuali settaggi di default.
Per eseguire una qualsiasi funzione ed ottenere il relativo risultato è necessario digitare il suo nome specificando fra parentesi tonde l’argomento (o gli argomenti) che rappresentare gli input della funzione.
Per esempio, per calcolare il logaritmo di un numero si utilizza la funzione log
. Visualizzando l’help della funzione lanciando
si nota che la funzione è caratterizzata da due argomenti: x
(numero/vettore di cui si vuole calcolare il logaritmo) e base
(base del logaritmo, di default viene calcolato il logaritmo naturale).
E’ possibile utilizzare la funzione come segue:
log(x=5, base=4) #log in base 4 di 5
[1] 1.160964
log(x=4) #log natural5 di 4
[1] 1.386294
E’ possibile anche omettere i nomi degli argomenti. In questo caso però è necessario fare attenzione all’ordine in cui vengono passati gli input alla funzione (vale l’ordine definito nell’help della funzione).
log(5, 4) #ometto i nomi degli argomenti
[1] 1.160964
log(4, 5) #Attenzione: questo è il logaritmo di 4 in base 5!
[1] 0.8613531
2.2 Creare oggetti in R
E’ possibile creare oggetti in R
tramite l’utilizzo dell’operatore di assegnazione dato da =
(in alternativa è possibile utilizzare <-
). Ad esempio il codice
= sqrt(83) x
crea un oggetto contenente uno scalare dato dalla radice quadrata di 83. L’oggetto è visibile nel pannello in alto a destra, nella tab denominata Environment. Lanciando il codice dato dal nome dell’oggetto (x
in questo caso) è possibile vederne il contenuto (attenzione, R è case-sensitive per cui x
è diverso da X
):
x
[1] 9.110434
A partire da un oggetto è possibile creare altri oggetti, ad esempio:
<- x - 3 #utilizzare <- è equivalente a = y
2.3 Vettori
Un vettore di numeri viene creato utilizzando la funzione c
(concatenate). Ad esempio, il seguente codice crea un vettore di 5 numeri. Il vettore viene salvato in un nuovo oggetto di nome vec
(l’assegnazione del vettore al nuovo oggetto viene effettuata usando il segno di uguale =
)
= c(x, y, log(10), -3.45, 5/0.4)
vec vec
[1] 9.110434 6.110434 2.302585 -3.450000 12.500000
la cui lunghezza è data da
length(vec)
[1] 5
E’ possibile eseguire operazioni con vettori. Ad esempio, il codice
/ 2 vec
[1] 4.555217 3.055217 1.151293 -1.725000 6.250000
restituisce un altro vettore della stessa lunghezza. Si noti che R
esegue le operazioni (in questo caso l’operazione +2) elemento per elemento.
E’ possibile anche sintetizzare i valori presenti in un vettore con funzioni tipo la somma (sum
) o la media (mean
) applicata a y
o a una sua trasformazione:
sum(vec) #somma dei valori di y
[1] 26.57345
sum(sqrt(vec)) #prima viene eseguita la radice quadrata e poi la somma
Warning in sqrt(vec): NaNs produced
[1] NaN
mean(vec) #media dei valori di y
[1] 5.31469
sum(vec) / length(vec) #altro modo per calcolare la media
[1] 5.31469
mean((vec^3)+4) #prima viene eseguita la trasformazione ^3+4 e poi la somma dei relativi valori
[1] 585.7166
2.4 Esercizi Lab 1
2.4.1 Esercizio 1
- Calcolare \(\exp(3-\frac{4}{5})+\frac{\sqrt{3+2^5}}{4-7\cdot \log(10))}\)
- Creare il vettore
x
contenente i valori \((10, log(0.2), 6/7, exp(4), sqrt(54), -0.124)\):
- Determinare la lunghezza di
x
. - Calcolare la somma dei valori contenuti in
x
.
2.4.2 Esercizio 2
- Commentare ogni riga del seguente codice spiegando quale operazione viene eseguita.
= c(3,6,8)
x
x/2
x^2
xsqrt(x)
sum(x)
sum(log(sqrt(x)))
= x
y = x+3*y^2 z