Lapply vs. sapply in r: was ist der unterschied?
Die Funktion lapply() in R kann verwendet werden, um eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Datenrahmens anzuwenden und eine entsprechende Liste zu erhalten.
Die Funktion sapply() kann auch verwendet werden, um eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Datenrahmens anzuwenden, gibt jedoch als Ergebnis einen Vektor zurück.
Die folgenden Beispiele zeigen, wie jede dieser Funktionen in R verwendet wird.
Beispiel: Verwendung von apply() in R
Der folgende Code zeigt, wie Sie mit der Funktion lapply() jeden Wert in jeder Spalte eines Datenrahmens mit 2 multiplizieren:
#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
Beachten Sie, dass das Ergebnis eine Liste ist.
Beispiel: Verwendung von sapply() in R
Der folgende Code zeigt, wie Sie mit der Funktion sapply() jeden Wert in jeder Spalte eines Datenrahmens mit 2 multiplizieren:
#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
Beachten Sie, dass das Ergebnis eine Vektormatrix ist.
Beachten Sie, dass Sie as.data.frame() verwenden können, um einen Datenrahmen anstelle einer Matrix zurückzugeben:
#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
Wann sollte lapply() oder sapply() verwendet werden?
In 99 % der Fälle werden Sie sapply() verwenden, da es sinnvoller ist, einen Vektor oder eine Matrix zurückzugeben.
In seltenen Fällen müssen Sie jedoch möglicherweise stattdessen lapply() verwenden, wenn das Ergebnis eine Liste sein soll.
Beachten Sie, dass sapply() und lappy() dieselben Operationen für einen Vektor, eine Matrix oder einen Datenrahmen ausführen. Der einzige Unterschied besteht in der Klasse des zurückgegebenen Objekts.
Zusätzliche Ressourcen
So wenden Sie eine Funktion auf jede Datenrahmenzeile in R an
So verwenden Sie die Funktion colSums() in R
So verwenden Sie die Funktion rowSums() in R