R - Le funzioni *apply()
R
Le funzioni *apply()
Cosa sono le funzioni *apply()
- Le funzioni *apply(), fanno parte del pacchetto base di R.
- Sono state create per eseguire una funzione più volte su un oggetto, evitando l'uso del loop.
- Esistono diverse funzioni *apply(), qui esaminiamo le seguenti: apply(), lapply().
apply()
- Esegue una funzione alle righe o alle colonne di una matrice o un array.
- X è una matrice o un array.
- MARGIN è 1 (applica la funzione alle righe) o 2 (applica la funzione alle colonne).
- FUN è la funzione da applicare.
# Crea una matrice con 3 righe e 4 colonne.
m <- matrix(1:12, nrow = 3)
print(m)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
# Calcola la somme delle righe.
apply(m, 1, sum)
[1] 22 26 30
# Calcola la somma delle colonne.
apply(m, 2, sum)
[1] 6 15 24 33
sapply() e lapply()
- Eseguono una funzione agli elementi di un vettore o di un oggetto.
- Restituiscono rispettivamente un vettore e una lista.
lapply(X, FUN)
- X è un vettore o un oggetto.
- FUN è la funzione da applicare.
- sapply() e lapply() applicate a un vettore di stringhe.
# Crea un vettore di stringhe.
v <- c("Leonardo", "Da", "Vinci")
# Converte le stringhe in maiuscolo.
sapply(v, toupper)
Leonardo Da Vinci
"LEONARDO" "DA" "VINCI"
lapply(v, toupper)
[[1]]
[1] "LEONARDO"
[[2]]
[1] "DA"
[[3]]
[1] "VINCI"
- sapply() e lapply() con una funzione definita dall'utente.
# Esegue il calcolo di una funzione.
sapply(1:3, function(x) x^2 - 2*x + 1)
[1] 0 1 4
lapply(1:3, function(x) x^2 - 2*x + 1)
[[1]]
[1] 0
[[2]]
[1] 1
[[3]]
[1] 4
- sapply() e lapply() applicate a un dataset.
# Esegue la funzione class() a tutte le variabili di un dataset.
sapply(iris, class)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"numeric" "numeric" "numeric" "numeric" "factor"
lapply(iris, class)
$Sepal.Length
[1] "numeric"
$Sepal.Width
[1] "numeric"
$Petal.Length
[1] "numeric"
$Petal.Width
[1] "numeric"
$Species
[1] "factor"
# Esegue la funzione mean() a tutte le variabili di un dataset (le variabili devono essere numeriche).
lapply(cars, mean)
$speed
[1] 15.4
$dist
[1] 42.98
sapply(cars, mean)
speed dist
15.40 42.98