So wenden sie eine funktion auf jede zeile einer matrix oder eines datenrahmens in r an
Sie können die Funktion apply() verwenden, um eine Funktion auf jede Zeile einer Matrix oder eines Datenrahmens in R anzuwenden.
Diese Funktion verwendet die folgende grundlegende Syntax:
anwenden (X, MARGIN, FUN)
Gold:
- X: Name der Matrix oder des Datenblocks.
- MARGIN: Dimension, für die die Operation ausgeführt werden soll. Verwenden Sie 1 für Zeile, 2 für Spalte.
- SPASS: Die anzuwendende Funktion.
Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis anwenden können.
Beispiel 1: Wenden Sie eine Funktion auf jede Zeile der Matrix an
Angenommen, wir haben die folgende Matrix in R:
#create matrix mat <- matrix(1:15, nrow= 3 ) #view matrix mast [,1] [,2] [,3] [,4] [,5] [1,] 1 4 7 10 13 [2,] 2 5 8 11 14 [3,] 3 6 9 12 15
Mit der Funktion apply() können wir verschiedene Funktionen auf die Zeilen der Matrix anwenden:
#find mean of each row apply(mat, 1, mean) [1] 7 8 9 #find sum of each row apply(mat, 1, sum) [1] 35 40 45 #find standard deviation of each row apply(mat, 1, sd) [1] 4.743416 4.743416 4.743416 #multiply the value in each row by 2 (using t() to transpose the results) t(apply(mat, 1, function (x) x * 2)) [,1] [,2] [,3] [,4] [,5] [1,] 2 8 14 20 26 [2,] 4 10 16 22 28 [3,] 6 12 18 24 30 #normalize every row to 1 (using t() to transpose the results) t(apply(mat, 1, function (x) x / sum(x) )) [,1] [,2] [,3] [,4] [,5] [1,] 0.02857143 0.1142857 0.2 0.2857143 0.3714286 [2,] 0.05000000 0.1250000 0.2 0.2750000 0.3500000 [3,] 0.06666667 0.1333333 0.2 0.2666667 0.3333333
Beachten Sie, dass es schneller ist, die integrierten Funktionen rowMeans() oder rowSums() zu verwenden, wenn Sie den Durchschnitt oder die Summe jeder Zeile ermitteln möchten:
#find mean of each row rowMeans(mat) [1] 7 8 9 #find sum of each row rowSums(mat) [1] 35 40 45
Beispiel 2: Wenden Sie eine Funktion auf jede Zeile des Datenrahmens an
Angenommen, wir haben die folgende Matrix in R:
#create data frame df <- data. frame (var1=1:3, var2=4:6, var3=7:9, var4=10:12, var5=13:15) #view data frame df var1 var2 var3 var4 var5 1 1 4 7 10 13 2 2 5 8 11 14 3 3 6 9 12 15
Mit der Funktion apply() können wir verschiedene Funktionen auf die Zeilen des Datenrahmens anwenden:
#find mean of each row apply(df, 1, mean) [1] 7 8 9 #find sum of each row apply(df, 1, sum) [1] 35 40 45 #find standard deviation of each row apply(df, 1, sd) [1] 4.743416 4.743416 4.743416 #multiply the value in each row by 2 (using t() to transpose the results) t(apply(df, 1, function (x) x * 2)) var1 var2 var3 var4 var5 [1,] 2 8 14 20 26 [2,] 4 10 16 22 28 [3,] 6 12 18 24 30 #normalize every row to 1 (using t() to transpose the results) t(apply(df, 1, function (x) x / sum(x) )) var1 var2 var3 var4 var5 [1,] 0.02857143 0.1142857 0.2 0.2857143 0.3714286 [2,] 0.05000000 0.1250000 0.2 0.2750000 0.3500000 [3,] 0.06666667 0.1333333 0.2 0.2666667 0.3333333
Ähnlich wie bei Matrizen ist es schneller, die integrierten Funktionen rowMeans() oder rowSums() zu verwenden, wenn Sie den Durchschnitt oder die Summe jeder Zeile ermitteln möchten:
#find mean of each row rowMeans(df) [1] 7 8 9 #find sum of each row rowSums(df) [1] 35 40 45
Zusätzliche Ressourcen
So rufen Sie Zeilennummern in R ab
So führen Sie eine ZÄHLENWENN-Funktion in R aus
So führen Sie eine SUMIF-Funktion in R aus