Lapply vs sapply in r: qual è la differenza?
La funzione lapply() in R può essere utilizzata per applicare una funzione a ciascun elemento di una lista, vettore o frame di dati e ottenere una lista di conseguenza.
La funzione sapply() può essere utilizzata anche per applicare una funzione a ciascun elemento di una lista, vettore o frame di dati, ma come risultato restituisce un vettore .
Gli esempi seguenti mostrano come utilizzare ciascuna di queste funzioni in R.
Esempio: come utilizzare apply() in R
Il codice seguente mostra come utilizzare la funzione lapply() per moltiplicare ciascun valore in ciascuna colonna di un frame di dati per 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 lapply(df, function (df) df*2) $x [1] 2 4 4 6 10 $y [1] 8 8 12 14 16 $z [1] 14 14 18 18 18
Tieni presente che il risultato è un elenco.
Esempio: come utilizzare sapply() in R
Il codice seguente mostra come utilizzare la funzione sapply() per moltiplicare ciascun valore in ciascuna colonna di un frame di dati per 2:
#create data frame df <- data. frame (x=c(1, 2, 2, 3, 5), y=c(4, 4, 6, 7, 8), z=c(7, 7, 9, 9, 9)) #view data frame df X Y Z 1 1 4 7 2 2 4 7 3 2 6 9 4 3 7 9 5 5 8 9 #multiply each value in each column by 2 sapply(df, function (df) df*2) X Y Z [1,] 2 8 14 [2,] 4 8 14 [3,] 4 12 18 [4,] 6 14 18 [5,] 10 16 18
Si noti che il risultato è una matrice vettoriale.
Tieni presente che puoi utilizzare as.data.frame() per restituire un frame di dati anziché una matrice:
#multiply each value in each column by 2 and return a data frame as. data . frame (sapply(df, function (df) df*2)) X Y Z 1 2 8 14 2 4 8 14 3 4 12 18 4 6 14 18 5 10 16 18
Quando utilizzare lapply() o sapply()
Nel 99% dei casi utilizzerai sapply() perché ha più senso restituire un vettore o una matrice.
Tuttavia, in rare circostanze potrebbe essere necessario utilizzare lapply() se si desidera che il risultato sia un elenco.
Nota che sapply() e lappy() eseguono le stesse operazioni su un vettore, una matrice o un frame di dati. L’unica differenza sta nella classe dell’oggetto restituito.
Risorse addizionali
Come applicare una funzione a ciascuna riga di frame di dati in R
Come utilizzare la funzione colSums() in R
Come utilizzare la funzione rowSums() in R