Eine Anleitung für apply(), lapply(), sapply() und tapply() in R (2024)

Table of Contents
apply() lapply() sapply() tapply()

In diesem Tutorial werden die Unterschiede zwischen den integrierten R-Funktionen apply(), sapply(), lapply() und tapply() sowie Beispiele für die Verwendung der einzelnen Funktionen erläutert.

apply()

Verwenden Sie die Funktion apply(), wenn Sie eine Funktion auf die Zeilen oder Spalten einer Matrix oder eines Dataframes anwenden möchten.

Die grundlegende Syntax für die Funktion apply() lautet wie folgt:

apply(X, MARGIN, FUN)

  • X ist der Name der Matrix oder des Dataframes
  • MARGIN gibt an, über welche Dimension eine Operation ausgeführt werden soll (1 = Zeile, 2 = Spalte).
  • FUN ist die spezifische Operation, die Sie ausführen möchten (z. B. min, max, sum, mean usw.).

Der folgende Code zeigt einige Beispiele für apply() in Aktion.

#Erstellen Sie ein Dataframe mit drei Spalten und fünf Zeilendata <- data.frame (a = c (1, 3, 7, 12, 9), b = c (4, 4, 6, 7, 8), c = c (14, 15, 11, 10, 6))data# a b c# 1 1 4 14# 2 3 4 15# 3 7 6 11# 4 12 7 10# 5 9 8 6#Finden Sie die Summe jeder Zeileapply(data, 1, sum)# [1] 19 22 24 29 23#Finden Sie die Summe jeder Spalteapply(data, 2, sum)# a b c# 32 29 56 #Finden Sie den Mittelwert jeder Zeileapply(data, 1, mean)# [1] 6.333333 7.333333 8.000000 9.666667 7.666667#Finden Sie den Mittelwert jeder Spalte, auf eine Dezimalstelle gerundetround(apply(data, 2, mean), 1)# a b c# 6.4 5.8 11.2 #Finden Sie die Standardabweichung jeder Zeileapply(data, 1, sd)# [1] 6.806859 6.658328 2.645751 2.516611 1.527525#Finden Sie die Standardabweichung jeder Spalteapply(data, 2, sd)# a b c# 4.449719 1.788854 3.563706 

lapply()

Verwenden Sie die Funktion lapply(), wenn Sie eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Dataframes anwenden und als Ergebnis eine Liste erhalten möchten.

Die grundlegende Syntax für die Funktion lapply() lautet wie folgt:

lapply (X, FUN)

  • X ist der Name der Liste, des Vektors oder des Dataframes
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt einige Beispiele für die Verwendung von lapply() in den Spalten eines Datenframes.

#Erstellen Sie ein Datenframe mit drei Spalten und fünf Zeilendata <- data.frame (a = c (1, 3, 7, 12, 9), b = c (4, 4, 6, 7, 8), c = c (14, 15, 11, 10, 6))data# a b c# 1 1 4 14# 2 3 4 15# 3 7 6 11# 4 12 7 10# 5 9 8 6#Finden Sie den Mittelwert jeder Spalte und geben Sie die Ergebnisse als Liste zurücklapply(data, mean)# $a# [1] 6.4## $b# [1] 5.8## $c# [1] 11.2# Multiplizieren Sie die Werte in jeder Spalte mit 2 und geben Sie die Ergebnisse als Liste zurücklapply(data, function(data) data*2)# $a# [1] 2 6 14 24 18## $b# [1] 8 8 12 14 16## $c# [1] 28 30 22 20 12

Wir können auch lapply() verwenden, um Operationen an Listen auszuführen. Die folgenden Beispiele zeigen, wie das geht.

#Erstellen Sie eine Listex <- list(a=1, b=1:5, c=1:10) x# $a# [1] 1## $b# [1] 1 2 3 4 5## $c# [1] 1 2 3 4 5 6 7 8 9 10#Finden Sie die Summe aller Elemente in der Listelapply(x, sum)# $a# [1] 1## $b# [1] 15## $c# [1] 55#Finden Sie den Mittelwert jedes Elements in der Listelapply(x, mean)# $a# [1] 1## $b# [1] 3## $c# [1] 5.5# Multiplizieren Sie die Werte jedes Elements mit 5 und geben Sie die Ergebnisse als Liste zurücklapply(x, function(x) x*5)# $a# [fünfzehn## $b# [1] 5 10 15 20 25## $c# [1] 5 10 15 20 25 30 35 40 45 50

sapply()

Verwenden Sie die Funktion sapply(), wenn Sie eine Funktion auf jedes Element einer Liste, eines Vektors oder eines Datenframes anwenden und als Ergebnis einen Vektor anstelle einer Liste erhalten möchten.

Die grundlegende Syntax für die Funktion sapply() lautet wie folgt:

sapply (X, FUN)

  • X ist der Name der Liste, des Vektors oder des Dataframes
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt einige Beispiele für die Verwendung von sapply() in den Spalten eines Datenframes.

#Erstellen Sie ein Dataframe mit drei Spalten und fünf Zeilendata <- data.frame(a = c (1, 3, 7, 12, 9), b = c (4, 4, 6, 7, 8), c = c (14, 15, 11, 10, 6))data# a b c# 1 1 4 14# 2 3 4 15# 3 7 6 11# 4 12 7 10# 5 9 8 6#Mittelwert jeder Spalte finden und Ergebnisse als Vektor zurückgebensapply(data, mean)# a b c# 6.4 5.8 11.2 #Multiplizieren Sie die Werte in jeder Spalte mit 2 und geben Sie die Ergebnisse als Matrix zurücksapply(data, function(data) data*2)# a b c# [1,] 2 8 28# [2,] 6 8 30# [3,] 14 12 22# [4,] 24 14 20# [5,] 18 16 12

Wir können auch sapply() verwenden, um Operationen an Listen auszuführen. Die folgenden Beispiele zeigen, wie das geht.

#Erstelle eine Listex <- list(a=1, b=1:5, c=1:10) x# $a# [1] 1## $b# [1] 1 2 3 4 5## $c# [1] 1 2 3 4 5 6 7 8 9 10#Finden Sie die Summe aller Elemente in der Listesapply(x, sum)# a b c# 1 15 55 #Finden Sie den Mittelwert jedes Elements in der Listesapply(x, mean)# a b c# 1.0 3.0 5.5

tapply()

Verwenden Sie die Funktion tapply(), wenn Sie eine Funktion auf Teilmengen eines Vektors anwenden möchten und die Teilmengen durch einen anderen Vektor definiert werden, normalerweise einen Faktor.

Die grundlegende Syntax für die Funktion tapply() lautet wie folgt:

tapply (X, INDEX, FUN)

  • X ist der Name des Objekts, normalerweise ein Vektor
  • INDEX ist eine Liste von einem oder mehreren Faktoren
  • FUN ist die spezifische Operation, die Sie ausführen möchten

Der folgende Code zeigt ein Beispiel für die Verwendung von tapply() für das integrierte R-Dataset iris.

#Die ersten sechs Zeilen des Iris-Datensatzes anzeigenhead(iris)# Sepal.Length Sepal.Width Petal.Length Petal.Width Species#1 5.1 3.5 1.4 0.2 setosa#2 4.9 3.0 1.4 0,2 setosa#3 4.7 3.2 1.3 0,2 setosa#4 4.6 3.1 1.5 0.2 setosa#5 5.0 3.6 1.4 0.2 setosa#6 5.4 3.9 1.7 0.4 setosa#Finden Sie die maximale Sepal.Länge jeder der drei Artentapply(iris$Sepal.Length, iris$Species, max)# setosa versicolor virginica # 5.8 7.0 7.9 #Finden Sie die mittlere Sepal.Width jeder der drei Artentapply(iris$Sepal.Width, iris$Species, mean)# setosa versicolor virginica # 3.428 2.770 2.974#Finden Sie das minimale Blütenblatt. Breite jeder der drei Artentapply(iris$Petal.Width, Iris$Species, min)# setosa versicolor virginica # 0.1 1.0 1.4 
Eine Anleitung für apply(), lapply(), sapply() und tapply() in R (2024)
Top Articles
Latest Posts
Article information

Author: Dean Jakubowski Ret

Last Updated:

Views: 6656

Rating: 5 / 5 (50 voted)

Reviews: 81% of readers found this page helpful

Author information

Name: Dean Jakubowski Ret

Birthday: 1996-05-10

Address: Apt. 425 4346 Santiago Islands, Shariside, AK 38830-1874

Phone: +96313309894162

Job: Legacy Sales Designer

Hobby: Baseball, Wood carving, Candle making, Jigsaw puzzles, Lacemaking, Parkour, Drawing

Introduction: My name is Dean Jakubowski Ret, I am a enthusiastic, friendly, homely, handsome, zealous, brainy, elegant person who loves writing and wants to share my knowledge and understanding with you.